[练习] dfs输出全排列
2014-03-17 20:59
375 查看
代码:
另一种写法,只改动了dfs函数
#include <iostream> #include <string.h> using namespace std; int visit[11],num[11]; int n; void dfs(int depth) { if(depth>n)//注意是大于号,不是大于等于,因为在等于的时候num[depth]还没有赋值 { for(int j=1;j<=n;j++) cout<<num[j]<<" "; cout<<endl; } else { for(int i=1;i<=n;i++) { if(!visit[i])//前提该数没有被访问 { visit[i]=1; num[depth]=i; dfs(depth+1); visit[i]=0;//返回原值,为新的排列做准备 } } } } int main() { while(cin>>n) { memset(visit,0,sizeof(visit)); dfs(1); } }
另一种写法,只改动了dfs函数
#include <iostream> #include <string.h> using namespace std; int visit[11],num[11]; int n; void dfs(int depth) { for(int i=1;i<=n;i++) { if(!visit[i]) { visit[i]=1; num[depth]=i; if(depth==n) { for(int j=1;j<=n;j++) cout<<num[j]<<" "; cout<<endl; } else dfs(depth+1); visit[i]=0; } } } int main() { while(cin>>n) { memset(visit,0,sizeof(visit)); dfs(1); } }运行结果:
相关文章推荐
- [练习] dfs输出全排列
- [练习] dfs输出全排列
- 八皇后问题(DFS加回溯)输出排列的所有情况
- 7-2 输出全排列(20 分)(dfs)
- 【练习笔记】剑指offer-输出n位数全排列
- 5-4 输出全排列 (20分)——DFS
- 利用dfs输出全排列
- PTA-输出全排列(DFS)
- HDOJ1716 排列2 DFS水题 注意输出格式
- hdu 1016 dfs+方案输出
- 1089~1096 (练习输入输出的8个题目)
- 给一个整数数组,对数组中的每个整数中的所有数字按照升序排列(如101排序后为011)请写一个方法,输出排序后的数组中的最大数。 例如有一个数组: 101、132、375,排序后11、123、357,
- DFS练习-codevs-1116四色问题
- DFS练习-codevs-1010过河卒
- for循环的小练习之交替输出
- python以环状形式组合排列图片并输出的方法
- python编程练习---递归输出杨辉三角
- 2018年全国多校算法寒假训练营练习比赛(第四场)F-Call to your teacher(dfs)
- 练习:判断字符串“mingrikejijavabu”中,字符“i”出现了几次,并将结果输出。
- 给定一个字符串,输出所有的排列组合方式