我有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