组合生成的迭代算法

Mar*_*vam 4 algorithm

可能重复:
从n返回k个元素的所有组合的算法

是否有任何迭代算法生成N个数字的组合,一次取'r'?

Chr*_*man 10

就在这里.

这是来自错误答案库的代码.

void generate_combos(int n, int k) {
    int com[100];
    for (int i = 0; i < k; i++) com[i] = i;
    while (com[k - 1] < n) {
        for (int i = 0; i < k; i++)
            cout << com[i] << " ";
        cout << endl;

        int t = k - 1;
        while (t != 0 && com[t] == n - k + t) t--;
        com[t]++;
        for (int i = t + 1; i < k; i++) com[i] = com[i - 1] + 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

这将按字典顺序生成组合.