求全排列
来源:互联网 发布:淘宝图片护盾怎么设置 编辑:程序博客网 时间:2024/05/23 00:07
问题: 检查n 个不同元素的所有排列方式
思路:
使用递归求解:
基部: 当下标为n-1的时候,整个元素已经遍历完成,此时的排列具有唯一性
递归: 若K< n-1, 那么当前下标为k的元素和后面的元素都要交换一次。
代码:
template<class T>void Perm(T list[], int k, int m){ int i; if (k == m) { for (i = 0; i <= m; i++) cout << list[i]; cout << endl; } else { for (i = k; i <= m; i++) { //[k]和[k:m]之间的元素逐个交换 Swap(list[k], list[i]); Perm(list, k+1, m); //恢复原始的排列顺序,方便下一次的排列 Swap(list[k], list[i]); } }//end else}
注意的是,交换完后,排列要恢复成原始状态。交换和恢复的次数相同可以保障原始状态
0 0
- 求全排列
- 求全排列
- 求全排列
- 求全排列
- 求全排列
- 求全排列
- 求全排列
- 求全排列
- 求全排列
- 递归求全排列
- 递归求全排列
- 递归求全排列
- 回溯法求全排列
- 递归方法求全排列
- 求全排列问题
- DFS求全排列
- 递归求全排列
- 求全排列和组合
- Linux目录结构
- Java事件处理
- listview刷新与内部控件的监听
- 大菲波数
- 数据结构 之 索引技术(线性、倒排、动态检索B+、位索引、红黑树)
- 求全排列
- 使用MySQL Migration Toolkit快速将Oracle数据导入MySQL
- 安卓中显示单位px和dip以及sp讲解
- 基础练习 特殊回文数
- ajax(一) 文本格式操作 get和post 实例
- Qt模块化笔记之Qt Widgets——动作类与小部件菜单项
- 做一个cocos2d-html5的虚拟摇杆
- Struts2与Servlet解耦
- [UVA 705] Slash Maze (建图 + DFS)