用DFS输出n个数的全排列(递归实现)
最近在研究DFS,可能脑子不太够吧,很多题都不知道怎么实现,全排列应该是最简单的题了。
运行成功的代码如下所示:
#include
#include
#include
using namespace std;
int n;
int vis[11] = {0} ;
//访问数组
int numth[11] ;
void dfs(int x)
{
int i;
if(x>n) //x大于n时输出,不能等于,等于时numth[n]还没被赋值
{
for(i=1;
i<=n;
i++)
cout<>n)
{
memset(vis,0,sizeof(vis));
//访问数组置0
dfs(1);
//数组numth[]从1开始遍历,注意不是0
} return 0;
}
但是当我换了一种方式描述时,却出现了bug,我不知道问题出在哪里,可能以后我就突然解决了,还请各位大神多多帮助
#include
#include
#include
using namespace std;
int n;
int vis[11] = {0} ;
//访问数组
int numth[11] ;
void dfs(int x)
{
int i;
if(x>n) //x大于n时输出,不能等于,等于时numth[n]还没被赋值
{
for(i=1;
i<=n;
i++)
cout<>n)
{
memset(vis,0,sizeof(vis));
//访问数组置0
dfs(1);
//数组numth[]从1开始遍历,注意不是0
} return 0;
}
比如我输入3,表示要求3的全排列时,结果显示为
【用DFS输出n个数的全排列(递归实现)】3 2 1
然而上面正确的代码显示的是
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- JS中的各种宽高度定义及其应用
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- 涉毒患者(新诗)
- 参保人员因患病来不及到指定的医疗机构就医,能否报销医疗费用()
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。