题目描述 Description
给出一个n, 请输出n的所有全排列
输入描述 Input
Description
读入仅一个整数n
输出描述 Output
Description
一共n!行,每行n个用空格隔开的数,表示n的一个全排列。并且按全排列的字典序输出。
样例输入 Sample
Input
3
样例输出 Sample
Output
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
数据范围及提示 Data Size &
Hint
分类标签 Tags 点此展开
代码:
#include<
cstdio >
#include<
iostream >
using namespace
std;
int
n,visit[11];
int a[11];
void dfs(int
b)
{
if(b==n+1)
{
for(int
i=1;i<=n;++i)
printf("%d
",a[i]);//注意一定要把当前取得的点放到一个数组中去,到了最后时把数组输出,否则如果是深搜的时候,每找到一个就输出,会使输出的数据不全*/
printf("
");
return ;
}
for(int
i=1;i<=n;++i)
{
if(!visit[i])
{
visit[i]=1;//标志设为这个i已经在排列中了
a[b]=i;
dfs(b+1);
visit[i]=0;//回溯
a[b]=0;
}
}
}
int main()
{
scanf("%d",&n);
int b=1;
for(int
i=1;i<=n;++i)
{
}
return 0;