【回溯】全排列
来源:互联网 发布:mac svn客户端使用教程 编辑:程序博客网 时间:2024/05/16 06:15
实际上是一种深度优先的算法。
回溯的思想:撞了南墙就回头,直到罗马,到了罗马一回头就是来时的路。
#include <iostream>using namespace std;void swap(int &a,int &b)//交换两个元素{ int tem; tem = a; a = b; b = tem;}int sum=0;void cal(int *a,int first,int end){ if(first == end)//如果递归到深层时,到最后交换的元素即时最后一个元素时就打印出来 { sum++; for(int i = 0; i <= end; i++) cout<<a[i]<<" "; cout<<endl; } else { for(int i = first; i <= end; i++) {//循环遍历使得当前位置后边的每一个元素都和当前深度的第一个元素交换一次 swap(a[first],a[i]);//使得与第一个元素交换 cal(a,first+1,end);//深入递归,此时已确定前边的元素,处理后边子序列的全排列形式。 swap(a[first],a[i]);//恢复交换之前的状态 } }}int main(){ int a[4] = {1,2,3,4}; cal(a,0,3); cout<<"一共"<<sum<<"种排列"; system("pause"); return 0;}
- 回溯全排列
- 【回溯】全排列
- 回溯法 全排列
- 全排列,回溯
- 全排列 递归+回溯
- 全排列 DFS 回溯
- 全排列 回溯
- 全排列回溯算法
- 回溯-全排列问题
- 全排列问题(回溯求解)
- 回溯法实现全排列
- 回溯法打印全排列[转]
- 回溯法 求集合全排列、子集
- UVA 140 - Bandwidth 暴力 全排列 回溯
- 回溯法求 1-n 全排列
- 用回溯算法解决全排列问题
- Safecracker(HDU1015 全排列回溯)
- 字符串全排列问题(递归回溯)
- cocos2d-x节点(CCNotificationCenter.h)API
- shiro入门实例
- 总结C#保留小数位数
- C++的const引用
- Java工作队列和线程池
- 【回溯】全排列
- 在论坛中出现的比较难的sql问题:12(递归问题2 拆分字符串)
- JAVA中CLASS.FORNAME的含义
- CRegKey::QueryValue连续读取注册表时读不出来值的解决办法
- D.K.的Android旅程--ArrayAdapter和ListActivity实现ListView
- 用c语言输入学生信息保存到文件中并读取文件内容
- next_permutation
- Sizeof与Strlen的区别与联系
- 职责链模式lua实现