C语言全排列回溯算法介绍
目录
- 前言
- 算法思想
- 完整代码
- 实验效果
- 总结
前言 本博文源于最近学习的递归算法,递归中遇到一个问题全排列的问题,我看见回溯特别神奇,特此记录一下。对比一下深度优先搜索与广度优先搜索,个人感觉这里的回溯像是一种递归树中的深度优先搜索的算法,他不断构造往下延伸的深度,使其达到完全编列
算法思想 比如3拿来举例,按照一般正常的话就是应该,
123 132 213 231 312 321六种,先造出一个hashtable数组让其存储在各位是否使用,然后创建path的p数组将数字进行选填,递归树我花在文章下面。
文章图片
完整代码
#includeconst int maxn = 11; //P 为当前排列 HashTable记录整个数x是否已经在P中int n,P[maxn],hashTable[maxn] = {false}; //当前处理排列的第index位置void generateP(int index) {if(index == n+1){for(int i=1; i<=n; i++){printf("%d",P[i]); }printf("\n"); return ; }for(int x = 1; x<=n; x++) {if(hashTable[x] == false) {P[index] = x; hashTable[x] = true; generateP(index + 1); hashTable[x] = false; }}}int main(){n = 3; generateP(1); return 0; }
实验效果
文章图片
总结 【C语言全排列回溯算法介绍】到此这篇关于C语言全排列回溯算法介绍的文章就介绍到这了,更多相关C语言全排列算法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- Java中的Unsafe在安全领域的使用总结和复现(实例详解)
- C语言实现简单员工工资管理系统
- 市场调研|全球与中国2,5二甲基苯酚市场现状及未来发展趋势
- 图书管理系统c语言大作业,C语言图书管理系统简洁版
- 这个牛逼的IDE插件帮你轻松修复代码中的安全漏洞
- 滚蛋吧,安全漏洞!这款|滚蛋吧,安全漏洞!这款 IDE 插件帮你轻松解决安全问题,核心引擎已开源
- C语言中有哪些字符处理函数你知道吗
- spring|2020年Spring全家桶面试题大全含答案共79题
- C语言与C++编程|C语言学习方法、学习平台及项目推荐
- linux学习|9.linux——历史命令、.bash_history文件、which、PATH变量、C语言、python、语言分类(强弱类语言和动静态语言)