全排列——深度优先搜索
- 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
请按任意键继续. . .
全排列——深度优先搜索相关推荐
- 一文搞懂深度优先搜索、广度优先搜索(dfs、bfs)
前言 你问一个人听过哪些算法,那么深度优先搜索(dfs)和宽度优先搜索(bfs)那肯定在其中,很多小老弟学会dfs和bfs就觉得好像懂算法了,无所不能,确实如此,学会dfs和bfs暴力搜索枚举确实利用 ...
- 【算法】蓝桥杯dfs深度优先搜索之排列组合总结
[导航] 上一篇文章 → <[算法]蓝桥杯dfs深度优先搜索之凑算式总结> 为了重申感谢之意,再次声明下文的大部分灵感均来自于[CSDN]梅森上校<JAVA版本:DFS算法题解两 ...
- 搜索 —— 深度优先搜索(DFS)
[概述] 深度优先搜索,是从初始状态起,利用一定的规则生成搜索树,寻找下一层任一个结点,检查是否出现目标状态,若未出现,以此状态利用规则生成再下一层任一个结点,再检查,重复过程一直到叶节点(即不能再生 ...
- 深度优先搜索及广度优先搜索
一.深度优先搜索. 1.主要思想:首先以一个未被访问过的顶点作为起始顶点,沿当前顶点走到未被访问顶点,当没有未被访问顶点时,返回上一个顶点,继续访问别的顶点,直到所有的顶点都被访问过. 2:主要通过循 ...
- 第4章第1节-不撞南墙不回头-深度优先搜索
/*使用深度优先搜索解决数的全排列问题*/ /* 深度优先搜索的基本模型: void dfs(int step) { 判断边界 尝试每一种可能 for(i = 1;i <= n; ...
- 深度优先搜索--不撞南墙不回头
深度优先搜索就好比走迷宫, 不断顺着一条路走, 直到走不通为止, 然后回退到上一个路口再向另外的方向行走(走过的方向就不会再走了,又不是傻子, 知道走不通,还向走不通的方向走), 不断重复(试过所有路 ...
- 【蓝桥杯C/C++】专题五:DFS深度优先搜索
专题五:DFS深度优先搜索 目录 专题五:DFS深度优先搜索 前言 什么是回溯法 如何理解回溯法 回溯法解决的问题 回溯法模板 1 .回溯函数模板返回值以及参数 2. 回溯函数终止条件 3 .回溯搜索 ...
- 啊哈 , 算法 !--深度优先搜索( C语言版 )
深度优先搜索 : 理解的关键在于解决"当下该如何做".至于"下一步该如何做"则与"当下该如何做"是一样的 问题 : 求出123的全排列 12 ...
- 深度优先搜索(DFS) + DFS的应用:字符串的排列问题
文章目录 深度优先搜索 基本思路: 举例: 穷举: 深度优先算法思路: DFS应用:全排列问题 深度优先搜索 深度优先搜索属于图算法的一种,是一个针对图和树的遍历算法.其过程简要来说是对每一个可能的分 ...
- (四)万能的搜索 —— 1. 深度优先搜索
1. 深度优先搜索 问题:输入一个数n,输出1~n的全排列. 举个例子,假如有编号为1.2.3的3张扑克牌和编号为1.2.3的3个盒子. 现在需要将这3张扑克牌分别放到3个盒子里面,并且每个盒子有且只 ...
最新文章
- Altium Designer chapter6总结
- 把二叉搜索树转换为累加树
- ACL 2021 | 北京大学KCL实验室:如何利用双语词典增强机器翻译?
- mysql5.7.24免安装版配置_mysql5.7.20免安装版配置方法图文教程
- python列表添加数字_Python-识别列表中的连续数字组
- maven工程打包老是报错_maven工程pom文件老是报错
- 除以13(信息学奥赛一本通-T1175)
- Python教程:网络爬虫快速入门实战解析
- Android 动态创建控件并设置控件的大小之Android屏幕适配攻略(五)
- Visual Studio C++6.0下载地址
- 常用WebServices返回数据的4种方法比较 (转)
- 【面试必背】 常问的15个MySQL数据库查询语句,
- android 素材标签,Android Studio矢量素材资源导入错误 – 不支持标签
- Windows镜像文件下载速度太慢?告诉你个小妙招
- 【工作提效】PLSQL使用技巧
- 让“施工进度计划”真正产生价值——不是为了做计划而计划
- android 投屏,华为手机的电脑模式是如何实现的
- 【番外篇】Excel:一行转多行
- python执行pip install 命令的时候报错 Filexxxx,line 1 pip install 的问题
- 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L
热门文章
- mfc 固定编辑框输入上限和下限_S7200smart的模拟量输入输出
- 基于Jupyter完成Iris数据集的 Fisher线性分类,学习数据可视化技术
- 释放pytorch占用的gpu显存_pytorch程序异常后删除占用的显存操作
- 疯狂python讲义这本书怎么样_疯狂Python讲义(读书笔记)
- 鼠标在滑块上滚轮控制_直线导轨(滚轮导轨)与线轨(滚珠导轨)的优劣势对比...
- 青岛大学计算机科学技术学院几本,郝蓉-青岛大学计算机科学技术学院
- php 五子棋源联机版_五子棋服务器客户端联机对战 C++版完整代码
- 服务器mysql_本地如何操作服务器的mysql,详细教程
- python_图像去畸变/图像矫正
- cartographer探秘第四章之代码解析(一) --- SLAM处理过程 --- 文章索引