组合生成的迭代算法

5

你能发一个例子吗? - Nikita Rybak
考虑一个包含10个项目的集合:A B C D E F G H I J。如果r=2,你期望得到什么?是AB BC CD DE EF FG GH GI IJ还是AB AC AD AE AF AG AH AI AJ BC BD BE ... - Aif
这个主题已经在这里处理过了:https://dev59.com/9nVC5IYBdhLWcg3w-mVO - Dave
1
@BilltheLizard 这真的是一个重复的问题吗?该问题要求使用迭代算法,而其他问题并不需要,也没有(我认为)在答案中涉及。 - chiastic-security
3
这不是重复内容。它明确要求一个迭代算法。 - dev_nut
这不是重复的。它明确要求使用迭代算法。 - erickson
1个回答

14

是的,有。

这里是来自Wrong Answer Library的代码。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接