`
eimhee
  • 浏览: 2153169 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何得到某集合的所有子集合?

J# 
阅读更多

我们都知道,一个含n个元素的集合拥有2^n个子集合,并且不难发现,其中每个子集合都是从0到2^n-1 每个数的二进制格式中0 放弃,1选择的结果,如下所示:

{}           000

{1}         100

{2}         010

{1,2}      110

{3}         001

{1,3}      101

{2,3}      011

{1,2,3}   111

所以根据数字的二进制转换,可以轻松获得一个集合的所有子集合,代码如下:

Sub GETALL(ByVal mycollection As String, ByRef RESULT() As String)
Dim x() As String
x = Split(Mid(mycollection, 2, Len(mycollection) - 2), ",")

Dim A() As String, b() As Integer '临时数组
Dim n As Integer ' 集合元素个数
Dim i As Long '循环变量
Dim num As Integer '子集合元素个数
Dim TEMP As Integer '二进制转换中间变量
n = UBound(x) + 1
ReDim b(0 To n - 1)
ReDim RESULT(2 ^ n - 1)
Debug.Print "集合 " & mycollection & " 共有子集合 " & 2 ^ n & " 个!"

For i = 0 To 2 ^ n - 1
TEMP = i
num = 0
For j = 0 To n - 1 '转换为二进制
b(j) = TEMP And 1 '0 or 1
TEMP = TEMP \ 2
If b(j) = 1 Then
num = num + 1
ReDim Preserve A(1 To num)
A(num) = x(j)
End If
Next

RESULT(i) = "{" & Join(A, ",") & "}" '结果保存
Debug.Print RESULT(i) '输出

Next
MsgBox "OK"
End Sub

Private Sub Command1_Click()
Dim S() As String
GETALL "{1,2,3,4,5,6}", S
End Sub

输出:

集合 {1,2,3,4,5,6} 共有子集合 64 个!
{}
{1}
{2}
{1,2}
{3}
{1,3}
{2,3}
{1,2,3}
{4}
{1,4}
{2,4}
{1,2,4}
{3,4}
{1,3,4}
{2,3,4}
{1,2,3,4}
{5}
{1,5}
{2,5}
{1,2,5}
{3,5}
{1,3,5}
{2,3,5}
{1,2,3,5}
{4,5}
{1,4,5}
{2,4,5}
{1,2,4,5}
{3,4,5}
{1,3,4,5}
{2,3,4,5}
{1,2,3,4,5}
{6}
{1,6}
{2,6}
{1,2,6}
{3,6}
{1,3,6}
{2,3,6}
{1,2,3,6}
{4,6}
{1,4,6}
{2,4,6}
{1,2,4,6}
{3,4,6}
{1,3,4,6}
{2,3,4,6}
{1,2,3,4,6}
{5,6}
{1,5,6}
{2,5,6}
{1,2,5,6}
{3,5,6}
{1,3,5,6}
{2,3,5,6}
{1,2,3,5,6}
{4,5,6}
{1,4,5,6}
{2,4,5,6}
{1,2,4,5,6}
{3,4,5,6}
{1,3,4,5,6}
{2,3,4,5,6}
{1,2,3,4,5,6}

分享到:
评论

相关推荐

    Java 得到集合中所有子集

    在循环内部,我们使用位运算判断当前整数的每一位,如果某位是1,就说明对应的集合元素应该包含在当前子集中。这样,通过位移和位与运算,我们可以构建出每个子集。最后,我们将构建好的子集添加到结果列表中。 ...

    电子功用-基于数值天气预报集合预报结果的风电功率概率预测方法

    3. 结合集合预报:将多个预报情景的气象数据输入风力模型,得到多组功率预测结果。 4. 概率统计:对所有预测结果进行统计分析,比如计算均值、标准差等统计量,以确定功率输出的概率分布。 5. 预测优化:可能涉及到...

    Excel问题集合

    ### Excel问题集合解析 #### 一、如何在一列列出工作簿中的所有表(表名无规律) 在Excel中,若想列出当前工作簿中的所有工作表名称,可以通过编写宏代码来实现。具体步骤如下: 1. **启用开发工具**:在Excel的...

    2022年电子的实习报告模板集合5篇.pdf

    4. **自我反思与成长**:通过实习,实习生会意识到自己的优点和不足,比如对某一领域的深入理解、工作效率、时间管理等方面,这些都是个人成长的重要部分。 5. **行业动态理解**:了解电子行业的最新发展趋势和技术...

    ztree获取当前选中节点子节点id集合的方法

    最后,为了得到ID的集合,我们可以将`nodes`数组转换为以逗号分隔的字符串,便于查看或传递给其他函数: ```javascript return nodes.join(","); ``` 至此,我们就成功地获取了当前选中节点的子节点ID集合。这个...

    CISCO 技术大集合

    CISCO 技术大集合 {适合你们的技术} 二、命令状态 1. router> 路由器处于用户命令状态,这时用户可以看路由器的连接状态,访问其它网络和主机,但不能看到和更改路由器的设置内容。 2. router# 在router>提示符...

    已知子女与父母相似关系的模糊矩阵R和父母与祖父母相似关系的模糊矩阵S分别如下所示,求子女与祖父母的相似关系模糊矩阵

    对于模糊矩阵的乘法,我们需要对R矩阵的所有行和S矩阵的所有列进行这样的运算。 在MATLAB中,可以使用模糊逻辑工具箱来实现这个操作。首先,需要将描述中的模糊矩阵R和S导入MATLAB,然后利用模糊逻辑工具箱提供的...

    回溯法求解子集和数给定一个n个整数的集合X={x1,x2....xn}和整数y,找出和等于y的X的子集Y.

    子集和问题是计算机科学中的一个经典问题,其目标是从给定的整数集合 `X = {x1, x2, ..., xn}` 中找出一个或多个子集 `Y`,使得这些子集中所有元素之和等于给定的目标值 `y`。形式化表示为: \[ \text{寻找} Y \...

    某电子有限公司制程品质控制培训教材.pptx

    本教材由厦门某电子有限公司生产部针对管理人员及新入职大学生设计,旨在提升制造流程中的质量管理水平。 首先,理解"过程"的概念至关重要。过程被定义为“一组将输入转化为输出的相互关联或相互作用的活动”。过程...

    java23种设计模式集合

    - 观察者模式(Observer):定义对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 - 状态模式(State):允许对象在其内部状态改变时改变它的行为。 - 策略模式...

    山东某矿次显微-超次显微金选矿的实验研究

    针对山东某碳质板岩型含Au 3.8 g/t的矿石,采用常规氰化钠浸出金率仅为5.20%的现象...采用硅酸钠+硫化钠作为调整剂,730作为载金矿物的捕收剂,获得浮选金精矿含Au 50.40 g/t,回收率85.13%,精矿品位和回收率得到显著提高。

    一种面向云计算非比例资源消耗特性的虚拟机放置算法(英文)

    首先,虚拟机被划分为若干子集合。划分的约束条件是保证各个虚拟机子集合作为一个整体所消耗的各类资源恰与某一类型物理机各类资源的配置成比例。然后,利用同构环境的虚拟机放置算法,完成各虚拟机子集合在相应类型...

    算法集合资料_PDF(2020.06.10).rar

    这份名为"算法集合资料_PDF(2020.06.10).rar"的压缩包文件,根据其标签"NOIP 算法 NOI",我们可以推断它包含了与全国青少年信息学奥林匹克(NOIP)竞赛相关的算法学习资料。NOIP是中国计算机学会举办的一项面向...

    迪某公司出差资料2010~2020年.zip

    这个文件集合很可能提供了丰富的信息,详细记录了迪某公司在过去十年中的业务活动,特别是与设备维修和服务相关的出差任务。下面将详细探讨这些资料可能包含的关键知识点。 1. **出差频率**:通过分析每年的文件...

    算法资料集合

    6. **分治策略**(Divide and Conquer):将大问题分解为小的相似子问题来解决,然后合并子问题的解得到原问题的解。典型的分治算法有归并排序、快速排序和大整数乘法等。 7. **搜索算法**:包括宽度优先搜索(BFS...

    百度校园招聘笔试题-搜索研发类.pdf

    题目要求设计一个程序,处理一组固定集合,每个集合包含一定数量的TERM,判断输入的TERM数组是否包含某集合的所有TERM。程序需要在短时间内对大量输入进行响应,并提供最优时间复杂度和空间复杂度。 解决方案可以...

    《近世代数》模拟试题2及答案.pdf

    5. **共轭类**:在群论中,元素的共轭类是由与该元素通过某个群元素作用得到的所有元素组成的集合。题目中3S的共轭类没有给出具体定义,但可以理解为群元素的一种分类方式。 6. **正规化子与中心化子**:正规化子N...

    离散数学概念名词大全.docx

    - **集合的覆盖**:集合中的所有元素都被某关系覆盖。 - **集合的划分**:将集合分割为若干不相交子集的过程。 - **等价关系**:同时满足自反性、对称性和传递性的关系。 - **等价类**:等价关系下元素所属的分类。 ...

Global site tag (gtag.js) - Google Analytics