题目描述 Description给出一个n, 请输出n的所有全排列
输入描述 Input Description读入仅一个整数n (1<=n<=10)
输出描述 Output Description一共n!行,每行n个用空格隔开的数,表示n的一个全排列。并且按全排列的字典序输出。
样例输入 Sample Input3
样例输出 Sample Output1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
最近练得比较废,来练练深搜。
思路没什么好讲的,正常的深搜思路,看代码就行了。
另外,据说写cout的有一个点过不了2,我想说:
标准输入输出大法好!!
233333333
代码:
#include<cstdio> int n,data[10]; void dfs(int x) { if(x>n) //搜到了n就输出 { for(int i=1;i<=n;i++) { printf("%d ",data[i]); } printf("\n"); return; } for(int i=1;i<=n;i++) { bool flag=false; for(int j=1;j<x;j++){ if(data[j]==i) flag=true; //比较土但是很好想的方法,查找前面是否有重复的,没有就搜 } if(!flag) { data[x]=i; dfs(x+1); } } } int main() { scanf("%d",&n); dfs(1); return 0; }
Comments | NOTHING