我有10个文本文件,其中包含一列1,-1,0。 我想设置一个总和每个文件的元素的组合。例如,如果我想查看10个文件中的2个文件的所有组合,我将在下面创建2个循环: double sum;算法循环组合
for(int i;i=0;i<n;i++){
for(int j;j=i;j<n;j++){
sum += x[i]+x[j];
}
}
另一个例子,如果我想看到更多的是10个文件的3个文件的所有组合,我将创建以下3个回路:
for(int i;i=0;i<n;i++){
for(int j;j=i;j<n;j++){
for(int k;k=j;k<n;k++)
sum += x[i]+x[j]+x[k];
}
}
}
等等,如果我想看组合10个文件中的x个文件,我会创建x个循环。
我的问题是:我正在寻找一种算法,通过选择x来确定循环的数量。如果x = 2,则创建2个循环,如果x = 3,则创建3个循环,如果x = 4,则创建4个循环,或者可能有另一种方法。 非常感谢
如果你有50个文件,50个嵌套循环?这太疯狂了。不用说,有更好的方法,比如使用'std :: next_permutation'和一些逻辑来生成组合(在这里有许多**例子),你需要一个(或两个)循环,而不管项目的数量。 – PaulMcKenzie
@PaulMcKenzie'std :: next_permutation'在这里看起来不是很有用,因为TS需要组合,而不是排列 – alexeykuzmin0
@ alexeykuzmin0 - 你错了。你可以使用'std :: next_permutation'来产生组合,如果你[努力一点]。(http://stackoverflow.com/questions/9430568/generating-combinations-in-c)。诀窍是使用由布尔值组成的控制数组。 – PaulMcKenzie