排列组合的递归
来源:互联网 发布:网络招商平台 编辑:程序博客网 时间:2024/05/21 16:08
令E={e1,e2,…,en}表示n个元素的集合,;Ei为E中移去元素ei后的集合,perm(X)表示集合X中元素的排列方式。Ei*perm(X)表示在集合X的每个排列方式的前面都加上ei后所得的排列方式。
则集合E的排列组合等于:
n= 1;perm(E) = {e1};
n> 1;perm(E) = e1*perm(E1)+e2*perm(E2)+……+en*perm(En);
#include<iostream>#include<vector>#include<iterator>#include<algorithm>using namespace std;/*求n个元素的排列组合*n = 1;perm(E) = {e1};*n > 1;perm(E) = e1*perm(E1)+e2*perm(E2)+……+en*perm(En);*/void fun(vector<int> & vec,vector<int>::iterator iter) {if(iter+1 == vec.end()){copy(vec.begin(),vec.end(),ostream_iterator<int>(cout," "));cout<<endl;return;}for (vector<int>::iterator it = iter; it< vec.end(); it++){swap_ranges(it,it+1,iter);fun(vec,iter+1);swap_ranges(it,it+1,iter);}}int main(){vector<int> vec;copy(istream_iterator<int>(cin),istream_iterator<int>(),back_inserter(vec));fun(vec,vec.begin());}/*输入和运算结果:1 2 3 4^Z1 2 3 41 2 4 31 3 2 41 3 4 21 4 3 21 4 2 32 1 3 42 1 4 32 3 1 42 3 4 12 4 3 12 4 1 33 2 1 43 2 4 13 1 2 43 1 4 23 4 1 23 4 2 14 2 3 14 2 1 34 3 2 14 3 1 24 1 3 24 1 2 3请按任意键继续. . .*/
1 4
- 排列组合的递归算法
- 排列组合的递归实现
- 排列组合的递归
- 排列组合算法的递归实现
- 递归—排列组合的实现
- 递归的思想生成排列组合
- 递归输出一组元素的排列组合方式
- 排列组合非递归算法的实现
- java 递归 实现数字的排列组合
- 求出排列组合的递归方法(C++)
- 一道递归思想的排列组合题目
- c#排列组合递归算法
- 递归实现数字排列组合
- 用递归实现排列组合
- C#递归求排列组合
- 用递归实现排列组合
- 用递归进行排列组合
- 递归实现排列组合
- 杭电 Rank
- Django学习1.0
- 关于URL Scheme
- TextView控件上添加表情图片
- /hdu 1030 Delta-wave (建坐标找最小步骤路径)
- 排列组合的递归
- struts1工作原理
- 多线程静态方法同步
- 一些收藏
- 谋哥:App自推广这个概念就由我来创立了!
- ajax 请求 服务器只响应第一次请求,第二次请求不响应,为什么
- POJ 3517 And Then There Was One (约瑟夫环问题)
- HDU4969 物理 Just a Joke
- 获取本机端口