目的:
输入:
3
输出:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
代码如下:
#include<stdio.h>
int a[],b[],n;
void dfs(int t)
{
int i,j;
if (t>n)//循环终止条件 , 输出结果
{
for(j=;j<n;j++)
printf("%d ",a[j]);
printf("%d\n",a[n]);
}
else for (i=;i<=n;i++)
if (b[i]==)//如果当前数字可用
{
b[i]=;
a[t]=i;
dfs(t+);//进入下一层循环
b[i]=;//退出循环,恢复状态
} }
int main()
{
int k;
while(scanf("%d",&n)!=EOF)
{
a[]=;
for(k=;k<;k++)
b[k]=;//1代表下标为k的数没有使用过
dfs();//第一次进入循环
}
return ;
}