递归的组合算法
从0 1 2 3 4中取3个数的组合,枚举如下:
0 1 2
0 1 3
0 1 4
0 2 3
0 2 4
0 3 4
1 2 3
1 2 4
1 3 4
2 3 4
#include <stdio.h>
#include <vector>
void c(int current, int n, int k, std::vector<int>* res) {
if (k > 0) {
while (current < n) {
res->push_back(current);
c(current + 1, n, k -1, res);
res->pop_back();
current++;
}
} else {
for (int i = 0; i < res->size(); ++i) {
printf("%d ", (*res)[i]);
}
printf("\n");
}
}
int main(int argc, char** argv) {
std::vector<int> res;
c(0, 50, 6, &res);
}