有没有一种方法可以基于宏和参数创建多个嵌套循环?

时间:2019-03-30 22:27:28

标签: loops for-loop nested combinations

我想允许可变数量的嵌套循环迭代所有组合。我曾尝试查看其他代码示例,但是嵌套循环的FAR运行速度比其他任何我看到过的nCr都快。我之前看到过解决方案对嵌套循环和索引数组执行类似的操作,但是我认为该解决方案不起作用,因为我正在进行组合,并且每个循环的开始和结束都基于循环的数量(第一,第二等)。我想做的就是改变

#define G(i) for(vars[i-1] = (i == 1 ? 0 : vars[i-2]+1); vars[i-1] < size - (choices - i); vars[i-1]++)

    int size, choices = 5;
    cin >> size;
    int cmb = 0;
    vector<int> vars(choices);
    G(1) {
    G(2) {
    G(3) {
    G(4) {
    G(5) {
        combos2.insert(combos2.begin(), choices.begin(), choices.end());
        cmb++;
    }}}}}

类似于:

for(int i = 1; i < choices; i++) {
    G(i) {
        combos2.insert(combos2.begin(), choices.begin(), choices.end());
            cmb++;

}
// Some other macro to print correct number of braces

0 个答案:

没有答案