笔记一:n个元素的所有排列递归算法
来源:互联网 发布:大数据 涂子沛 epub 编辑:程序博客网 时间:2024/05/01 21:24
求n个元素的所有排列组合
问题:给定n个元素,设序列为{a,b,c},求所有的排列组合。
思路:每次递归,对组合的第一个元素排序。
代码:
#include<iostream>#include<iterator>#include<algorithm>using namespace std;template<class T>void permutation(T list[], int k, int m){ if (k == m) { copy(list, list + m + 1, ostream_iterator<T>(cout, "")); //将当前list排序 cout << endl; } else{ for (int i = k; i <= m; i++) { swap(list[i], list[k]); //将下标为i的元素交换到k位置,类似从list[k:m]中剔除操作 permutation(list, k + 1, m); swap(list[i], list[k]); } }}int main(int argc, char* argv[]){ char arr[3] = { 'a', 'b', 'c' }; cout << "排序结果如下:" << endl; permutation(arr, 0, 2); return 0;}
结果:
知识积累:
在新建工程时犯了错误,直接选择新建空项目,导致运行时控制台一闪而过。解决的办法:
- 重新建立一个Win32控制台应用程序
- 配置属性—链接器—系统—子系统中,找到控制台,选定并应用。
copy函数:
- 头文件是
<algorithm>
。将一定范围的元素进行复制。具体可参考:copy的详细解释
- 头文件是
ostream_iterator:
- 头文件是
<iterator>
。流迭代器,“ ”表示每一输出流之间的间隔符。具体可参考:ostream_iterator的定义
- 头文件是
0 0
- 笔记一:n个元素的所有排列递归算法
- 递归算法生成n个元素的所有排列
- 递归生成n个元素的所有排列方式
- 递归-N个不相同的元素,输出所有可能的排列
- n个元素的全排列算法
- 蓝桥杯常用算法知识点:【递归】求n个元素的全排列
- 递归实现n个不同字符的所有全排列
- 递归求n个元素的全排列
- 运用递归求n个元素的全排列
- 普通递归算法:输出n个数的所有全排列
- 递归算法计算n各元素的排列
- 《数据结构、算法与应用》5.(递归输出n个元素的所有子集)
- n个元素里选取m个,求m < n时的排列(不是全排列!!!)的递归算法代码
- 算法学习笔记----确定n个元素的任何排列中逆序对的数目
- 采用递归方式输出N个不同元素所有排列方式
- 深度优先算法求含有N个元素的集合的全部组合(即:在集合中选1,2,3...N个元素的所有组合,不是排列)
- 使用递归函数,输出n个元素的所有子集
- 使用递归函数,输出n个元素的所有子集
- 一个帖子解决服务器与客户端传递对象的问题,JSON解析两种方法
- 理解LinkedHashMap
- 整体架构CCCamera 摄像机
- [剑指offer]二进制中1的个数
- Web Service 的工作原理
- 笔记一:n个元素的所有排列递归算法
- springMVC(3)------RequestMapping注解常用功能分析
- 【排序】HDU1872稳定排序
- 兰州骑行:74公里单骑什川镇
- JDK中System.getProperty()方法介绍
- Excel表格的加密与解密
- Cocos2d-x 整体描述
- android仿IOS底部弹对话框
- 实用资源推荐分享