您的位置:首页 > 其它

啊哈,算法! -----dfs1

2015-08-04 20:33 323 查看
问题:输入一个数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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: