【问题标题】:Iterating over all possible ways of dividing 12 objects over 4 groups遍历将 12 个对象划分为 4 个组的所有可能方式
【发布时间】:2021-03-06 12:01:44
【问题描述】:

我正在尝试找到一种方法来迭代将 12 个对象划分为大小相等的 4 个组的所有可能组合(组内的顺序无关紧要,组的顺序很重要)。

我知道组合的总数是 369600 = 12! / (3!)^4,但我不知道如何迭代所有这些不同的组合。

【问题讨论】:

标签: arrays algorithm math combinations permutation


【解决方案1】:

您有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]}
  1. G[2] 执行与步骤 2 相同的操作

  2. 将剩余的 3 项分配给 G[3]

  3. 写出G[1], G[2], G[3], G[4]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    相关资源
    最近更新 更多