【发布时间】:2021-03-06 12:01:44
【问题描述】:
我正在尝试找到一种方法来迭代将 12 个对象划分为大小相等的 4 个组的所有可能组合(组内的顺序无关紧要,组的顺序很重要)。
我知道组合的总数是 369600 = 12! / (3!)^4,但我不知道如何迭代所有这些不同的组合。
【问题讨论】:
标签: arrays algorithm math combinations permutation
我正在尝试找到一种方法来迭代将 12 个对象划分为大小相等的 4 个组的所有可能组合(组内的顺序无关紧要,组的顺序很重要)。
我知道组合的总数是 369600 = 12! / (3!)^4,但我不知道如何迭代所有这些不同的组合。
【问题讨论】:
标签: arrays algorithm math combinations permutation
您有O[0], ..., O[11] 的对象和G[0], ..., G[3] 的组现在您可以通过以下步骤将对象分配给组:
1.像这样为G[0]选择3个对象:
for(i = 0 ; i<10 ; i++){
for(j = i+1 ; j<11 ; j++){
for(k = j+1 ; k<12 ; k++){
G[0] = {O[i] , O[j] , O[k]}
2.通过从对象列表中删除O[i], O[j], O[k]来创建一个新对象列表,并执行与上面G[1]的伪代码相同的操作,我的意思是这样的:
for(l = 0 ; l<7 ; l++){
for(m = l+1 ; m<8 ; m++){
for(n = m+1 ; n<9 ; n++){
G[1] = {O[l] , O[m] , O[n]}
对G[2] 执行与步骤 2 相同的操作
将剩余的 3 项分配给 G[3]
写出G[1], G[2], G[3], G[4]
【讨论】: