失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 全排列——深度优先搜索

全排列——深度优先搜索

时间:2023-11-18 05:19:08

相关推荐

全排列——深度优先搜索

1.参考链接2.完整代码

1.参考链接

参考:啊哈算法[啊哈磊著]

第四章第1节:不撞南墙不回头——深度优先搜索

链接2:递归实现全排列问题

2.完整代码

#include <iostream>using namespace std;int a[10],book[10],n; //c语言的全局变量在没有赋值以前默认为0//book 表示已经使用的扑克牌,book[i]=1表示数字为i的扑克牌已经放进了箱子里。手中已经没有该扑克牌了。//book[i]=0表示i号扑克牌还在手上。void dfs(int step) //step表示此时站在第step个箱子面前。{if(step==n+1) //如果站在第n+1个箱子面前,则表示前n 个箱子已经放好扑克牌{for(int i=1;i<=n;i++){cout<<a[i]<<" ";}cout<<endl;return; //打印完毕一定要return,否则程序会一直运行下去。 ???为什么呢?}for(int i=1;i<=n;i++){if(book[i]==0){a[step]=i; //将i号扑克牌放到第step个盒子中。book[i]=1; //将book[i]设为1,表示该扑克牌已经不在手上了。dfs(step+1); //第step 个盒子已经放好扑克牌,接下来需要走到下一个盒子面前。book[i]=0; //这是非常重要的一步,一定要将刚才尝试的扑克牌收回,才能进行下一次尝试。//并不明白什么意思、、、、、}}return;}int main(){cin>>n;dfs(1); //首先站在第一个箱子面前。 从第一个箱子开始system("pause");return 0;}

运行结果:

31 2 31 3 22 1 32 3 13 1 23 2 1请按任意键继续. . .

如果觉得《全排列——深度优先搜索》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。