题目描述 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