我想允许可变数量的嵌套循环迭代所有组合。我曾尝试查看其他代码示例,但是嵌套循环的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