实现组合:对于C(N, M)
int M = 3, N = 5;
vector<int> a,b(M),c(N);
for (int i = 0; i < N; ++i)
{
a.push_back(i);
}
Combination(a, b, 0,M,M);
void Combination(vector<int> &a, vector<int> &b, int l, int m, int M)
{
//b用于临时存储结果。len(b)==M;l为左侧游标,初始值取0;M是取出个数;m用于指示递归深度,初始值取M)
int N = a.size();
if (m == 0) {
vector<int> nList;
for (int i = 0; i < b.size(); ++i){
cout << b[i] << ' ';
}
cout << endl;
return;
}
for (int i = l; i < N; i++){
b[M-m] = a[i];
Combination(a, b,i+1,m - 1,M);
}
}
参考文档: