• 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;
}

运行结果:

3
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
请按任意键继续. . .

全排列——深度优先搜索相关推荐

  1. 一文搞懂深度优先搜索、广度优先搜索(dfs、bfs)

    前言 你问一个人听过哪些算法,那么深度优先搜索(dfs)和宽度优先搜索(bfs)那肯定在其中,很多小老弟学会dfs和bfs就觉得好像懂算法了,无所不能,确实如此,学会dfs和bfs暴力搜索枚举确实利用 ...

  2. 【算法】蓝桥杯dfs深度优先搜索之排列组合总结

    [导航] 上一篇文章 → <[算法]蓝桥杯dfs深度优先搜索之凑算式总结>   为了重申感谢之意,再次声明下文的大部分灵感均来自于[CSDN]梅森上校<JAVA版本:DFS算法题解两 ...

  3. 搜索 —— 深度优先搜索(DFS)

    [概述] 深度优先搜索,是从初始状态起,利用一定的规则生成搜索树,寻找下一层任一个结点,检查是否出现目标状态,若未出现,以此状态利用规则生成再下一层任一个结点,再检查,重复过程一直到叶节点(即不能再生 ...

  4. 深度优先搜索及广度优先搜索

    一.深度优先搜索. 1.主要思想:首先以一个未被访问过的顶点作为起始顶点,沿当前顶点走到未被访问顶点,当没有未被访问顶点时,返回上一个顶点,继续访问别的顶点,直到所有的顶点都被访问过. 2:主要通过循 ...

  5. 第4章第1节-不撞南墙不回头-深度优先搜索

    /*使用深度优先搜索解决数的全排列问题*/ /* 深度优先搜索的基本模型: void dfs(int step) {     判断边界     尝试每一种可能 for(i = 1;i <= n; ...

  6. 深度优先搜索--不撞南墙不回头

    深度优先搜索就好比走迷宫, 不断顺着一条路走, 直到走不通为止, 然后回退到上一个路口再向另外的方向行走(走过的方向就不会再走了,又不是傻子, 知道走不通,还向走不通的方向走), 不断重复(试过所有路 ...

  7. 【蓝桥杯C/C++】专题五:DFS深度优先搜索

    专题五:DFS深度优先搜索 目录 专题五:DFS深度优先搜索 前言 什么是回溯法 如何理解回溯法 回溯法解决的问题 回溯法模板 1 .回溯函数模板返回值以及参数 2. 回溯函数终止条件 3 .回溯搜索 ...

  8. 啊哈 , 算法 !--深度优先搜索( C语言版 )

    深度优先搜索 : 理解的关键在于解决"当下该如何做".至于"下一步该如何做"则与"当下该如何做"是一样的 问题 : 求出123的全排列 12 ...

  9. 深度优先搜索(DFS) + DFS的应用:字符串的排列问题

    文章目录 深度优先搜索 基本思路: 举例: 穷举: 深度优先算法思路: DFS应用:全排列问题 深度优先搜索 深度优先搜索属于图算法的一种,是一个针对图和树的遍历算法.其过程简要来说是对每一个可能的分 ...

  10. (四)万能的搜索 —— 1. 深度优先搜索

    1. 深度优先搜索 问题:输入一个数n,输出1~n的全排列. 举个例子,假如有编号为1.2.3的3张扑克牌和编号为1.2.3的3个盒子. 现在需要将这3张扑克牌分别放到3个盒子里面,并且每个盒子有且只 ...

最新文章

  1. Altium Designer chapter6总结
  2. 把二叉搜索树转换为累加树
  3. ACL 2021 | 北京大学KCL实验室:如何利用双语词典增强机器翻译?
  4. mysql5.7.24免安装版配置_mysql5.7.20免安装版配置方法图文教程
  5. python列表添加数字_Python-识别列表中的连续数字组
  6. maven工程打包老是报错_maven工程pom文件老是报错
  7. 除以13(信息学奥赛一本通-T1175)
  8. Python教程:网络爬虫快速入门实战解析
  9. Android 动态创建控件并设置控件的大小之Android屏幕适配攻略(五)
  10. Visual Studio C++6.0下载地址
  11. 常用WebServices返回数据的4种方法比较 (转)
  12. 【面试必背】 常问的15个MySQL数据库查询语句,
  13. android 素材标签,Android Studio矢量素材资源导入错误 – 不支持标签
  14. Windows镜像文件下载速度太慢?告诉你个小妙招
  15. 【工作提效】PLSQL使用技巧
  16. 让“施工进度计划”真正产生价值——不是为了做计划而计划
  17. android 投屏,华为手机的电脑模式是如何实现的
  18. 【番外篇】Excel:一行转多行
  19. python执行pip install 命令的时候报错 Filexxxx,line 1 pip install 的问题
  20. 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L

热门文章

  1. mfc 固定编辑框输入上限和下限_S7200smart的模拟量输入输出
  2. 基于Jupyter完成Iris数据集的 Fisher线性分类,学习数据可视化技术
  3. 释放pytorch占用的gpu显存_pytorch程序异常后删除占用的显存操作
  4. 疯狂python讲义这本书怎么样_疯狂Python讲义(读书笔记)
  5. 鼠标在滑块上滚轮控制_直线导轨(滚轮导轨)与线轨(滚珠导轨)的优劣势对比...
  6. 青岛大学计算机科学技术学院几本,郝蓉-青岛大学计算机科学技术学院
  7. php 五子棋源联机版_五子棋服务器客户端联机对战 C++版完整代码
  8. 服务器mysql_本地如何操作服务器的mysql,详细教程
  9. python_图像去畸变/图像矫正
  10. cartographer探秘第四章之代码解析(一) --- SLAM处理过程 --- 文章索引