c_cpp 组合 - 枚举所有

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 组合 - 枚举所有相关的知识,希望对你有一定的参考价值。

// Trick: initialize a vector of k 1's, then resize to 'n' and fill with 0's
// use next_permutation (in reverse) to "bitmask" and enumerate all options
int enumerate_combinations(int n, int k, vector<int> &A) {
  vector<int>  b(k, 1);
  b.resize(n, 0);

  // very basic, store count
  int cnt = 0;

  do {
    // pass over all n items, take/save/print the ones that match the "bitmask"
    for (int i = 0; i < n; i++) {
      if (b[i]) {
        cout << A[i] << " ";
      }
    }
    cnt++;
    cout << endl;

  } while (next_permutation(b.rbegin(), b.rend()));

  return cnt;
}

以上是关于c_cpp 组合 - 枚举所有的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 给定n对括号,编写一个函数来生成格式正确的括号的所有组合。例如,给定n = 3,解决方案

打开枚举(带有标志属性)而不声明所有可能的组合?

Python:枚举列表中所有元素的可能组合

c_cpp 提取出现在源字符串中的目标子字符串的所有组合。即:目标:“abc”,来源:“abcdefgbcahijkacb12df”,

从 C 中的递归函数中枚举并返回从二维数组中的 n 项中选择 k 的所有组合

c_cpp 给定两个整数n和k,返回1 ... n中k个数的所有可能组合。例如,如果n = 4且k = 2,则解决方案是: