版权声明:华天才原创 https://blog.csdn.net/weixin_43891469/article/details/85385759
题目描述
先给一个正整数 ( 1 < = n < = 10 )
例如n=3,所有组合,并且按字典序输出:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
输入
输入一个整数n( 1<=n<=10)
输出
输出所有全排列
每个全排列一行,相邻两个数用空格隔开(最后一个数后面没有空格)
样例输入
3
样例输出
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
标程
#include<cstdio>
int a[1000]={0},b[1000]={0},n;
inline void dfs(int k)
{
if(k==n+1)
{
for(int i=1;i<=n;i++)
printf("%d ",a[i]);
printf("\n");
return;
}
for(int i=1;i<=n;i++)
if(b[i]==0)
{
a[k]=i,b[i]=1;
dfs(k+1);
a[k]=0,b[i]=0;
}
}
int main()
{
scanf("%d",&n);
dfs(1);
return 0;
}