使用DFS,输入n,输出1~n的所有全排列
#include<stdio.h>
int n,a[10],book[10];
void dfs(int step)//step 表示当前在第几个位置
{
int i;
if(step==n+1)//如果step==n+1表示前n个数字已经放好
{ //输出
for(i=1;i<=n;i++)
printf("%d",a[i]);
printf("\n");
}
for(i=1;i<=n;i++)
if(book[i]==0)//判断次数字是否用过
{
a[step]=i;//存储当前位置的数字,以便满足条件输出
book[i]=1;//标记当前数字,以防重用
dfs(step+1);//放好当前位置数字之后,安排下一个数字
book[i]=0;
}
return ;
}
int main()
{
scanf("%d",&n);//输入n
dfs(1);//从第一个位置开始
return 0;
}