获取组的所有子组[重复]

Posted

技术标签:

【中文标题】获取组的所有子组[重复]【英文标题】:Get all subgroup of a group [duplicate] 【发布时间】:2014-03-13 11:37:10 【问题描述】:

我有一组 N 实体。 我有什么办法让所有子组都满足每个子组中的实体数等于M (N>M)?

我举个例子说明一下:

我有N = 5 整数(例如:1,3,4,6,8)。 有没有办法获取所有包含L = 3 实体的子组? 这些子组是1,3,41,3,61,3,81,4,61,4,81,6,83,4,6、...

看来一定是蛮力算法。

感谢和问候

【问题讨论】:

【参考方案1】:

这是递归解决方案的伪代码:

given_array[n]
current_combination[k]

void calculate( max_idx,  cur_idx, cur_count)

    if max_idx > cur_idx
        return
    if cur_count==k
        print current_combination
        return

    current_combination.add(given_array[cur_idx])
    calculate( max_idx, cur_idx+1, cur_count+1)
    current_combination.remove(given_array[cur_idx])


    calculate( max_idx, cur_idx+1, cur_count)


函数的第一次调用应该如下:

calculate( n, 0, 0)

【讨论】:

【参考方案2】:

这里是获取 nCk 的伪代码

getCombinations(set[],i,x,k,buff[]) 

   if(i<k) 

     for(j=x;j<set.size();j++) 

           buff[i] = set[j];
           getCombinations(set,i+1,j+1,k,buff);
     

   

   else    // print combination

        for(y=0;y<k;y++) 

            printf(set[buff[y]]);
        

   


Call :- getCombinations(set,0,0,k,new int[k]);

【讨论】:

buff[j]; 是什么意思? @EliaWeiss 抱歉输入错误,请检查我的编辑

以上是关于获取组的所有子组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 panda apply() 函数将每个子组的所有值替换为子组最小值(无循环)

Python Gitlab API - 列出组/子组的共享项目

读取/过滤分发组的活动目录的子组?

如何创建一个包含子组的 Ansible 组,不包括子组?

如何通过Java中的LDAP获取AD组的所有成员

组内子组的唯一排名值