问题:输入一个数n,输出1~n的全排序。(利用深度搜索)
题解:假设每个n个盒子去存储n个数字
代码实现
#include<cstdio>
#include<iostream>
using namespace std;
int a[10],book[10],n;
void dfs(int step)
{
int i;
if(step==n+1) //如果步数超过n+1证明排列已经完成
{
for(i=1;i<=n;i++){
printf("%d",a[i]);
}
printf("\n");
return ;//返回调用处
}
for(i=1;i<=n;i++){
if(book[i]==0)//用0来标记牌是否还在手上
{
a[step]=i;//将牌放入step号盒子中
book[i]=1;//放进去对其进行标记
dfs(step+1);//递归调用
book[i]=0;清楚标记
}
}
return ;
}
int main()
{
scanf("%d",&n);
dfs(1);
return 0;
}