照片做视频的软件 模板下载网站,漳州网站建设多少钱,极验 wordpress,seo网站快速排名软件#include iostream
#include vectorusing namespace std;// 求排列组合算法: C(n, m): 从n个数中任选m个数组成一个新的数, 求有多少种组合, 分别是什么
// 从v[]里任选m个元素组成一个组合, 与顺序无关
templateclass T
vectorvectorTiostream
#include vectorusing namespace std;// 求排列组合算法: C(n, m): 从n个数中任选m个数组成一个新的数, 求有多少种组合, 分别是什么
// 从v[]里任选m个元素组成一个组合, 与顺序无关
templateclass T
vectorvectorT fun(vectorT v, int m)
{if(v.size() m)return {}; // 找不到这样的组合vectorvectorT ret;if(v.size() m) // v[]中任选m个数{ret.push_back(v); // 唯一的一个组合return ret;}else if(m 1) // v[]中任选1个数{for(auto it : v){ret.push_back(vectorT {it});}return ret;}while(v.size() m){auto first v.front();v.erase(v.begin());// 在剩下的v[1~]中任选m-1个数auto res fun(v, m - 1);for(auto it : res){it.insert(it.begin(), first);ret.push_back(it);}}return ret;
}int main()
{vectorint v {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};int m 3;auto res fun(v, m);for(auto it : res){for(auto it2 : it)printf(%d , it2);printf(\n);}printf(res.size%d\n, res.size());return 0;
}