组合算法

来源:互联网 发布:mac 磁盘工具 急救 编辑:程序博客网 时间:2024/04/29 07:28

递归的组合算法

从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);}