我们都知道,一个含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}
分享到:
相关推荐
在循环内部,我们使用位运算判断当前整数的每一位,如果某位是1,就说明对应的集合元素应该包含在当前子集中。这样,通过位移和位与运算,我们可以构建出每个子集。最后,我们将构建好的子集添加到结果列表中。 ...
3. 结合集合预报:将多个预报情景的气象数据输入风力模型,得到多组功率预测结果。 4. 概率统计:对所有预测结果进行统计分析,比如计算均值、标准差等统计量,以确定功率输出的概率分布。 5. 预测优化:可能涉及到...
### Excel问题集合解析 #### 一、如何在一列列出工作簿中的所有表(表名无规律) 在Excel中,若想列出当前工作簿中的所有工作表名称,可以通过编写宏代码来实现。具体步骤如下: 1. **启用开发工具**:在Excel的...
4. **自我反思与成长**:通过实习,实习生会意识到自己的优点和不足,比如对某一领域的深入理解、工作效率、时间管理等方面,这些都是个人成长的重要部分。 5. **行业动态理解**:了解电子行业的最新发展趋势和技术...
最后,为了得到ID的集合,我们可以将`nodes`数组转换为以逗号分隔的字符串,便于查看或传递给其他函数: ```javascript return nodes.join(","); ``` 至此,我们就成功地获取了当前选中节点的子节点ID集合。这个...
CISCO 技术大集合 {适合你们的技术} 二、命令状态 1. router> 路由器处于用户命令状态,这时用户可以看路由器的连接状态,访问其它网络和主机,但不能看到和更改路由器的设置内容。 2. router# 在router>提示符...
对于模糊矩阵的乘法,我们需要对R矩阵的所有行和S矩阵的所有列进行这样的运算。 在MATLAB中,可以使用模糊逻辑工具箱来实现这个操作。首先,需要将描述中的模糊矩阵R和S导入MATLAB,然后利用模糊逻辑工具箱提供的...
子集和问题是计算机科学中的一个经典问题,其目标是从给定的整数集合 `X = {x1, x2, ..., xn}` 中找出一个或多个子集 `Y`,使得这些子集中所有元素之和等于给定的目标值 `y`。形式化表示为: \[ \text{寻找} Y \...
本教材由厦门某电子有限公司生产部针对管理人员及新入职大学生设计,旨在提升制造流程中的质量管理水平。 首先,理解"过程"的概念至关重要。过程被定义为“一组将输入转化为输出的相互关联或相互作用的活动”。过程...
- 观察者模式(Observer):定义对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 - 状态模式(State):允许对象在其内部状态改变时改变它的行为。 - 策略模式...
针对山东某碳质板岩型含Au 3.8 g/t的矿石,采用常规氰化钠浸出金率仅为5.20%的现象...采用硅酸钠+硫化钠作为调整剂,730作为载金矿物的捕收剂,获得浮选金精矿含Au 50.40 g/t,回收率85.13%,精矿品位和回收率得到显著提高。
首先,虚拟机被划分为若干子集合。划分的约束条件是保证各个虚拟机子集合作为一个整体所消耗的各类资源恰与某一类型物理机各类资源的配置成比例。然后,利用同构环境的虚拟机放置算法,完成各虚拟机子集合在相应类型...
这份名为"算法集合资料_PDF(2020.06.10).rar"的压缩包文件,根据其标签"NOIP 算法 NOI",我们可以推断它包含了与全国青少年信息学奥林匹克(NOIP)竞赛相关的算法学习资料。NOIP是中国计算机学会举办的一项面向...
这个文件集合很可能提供了丰富的信息,详细记录了迪某公司在过去十年中的业务活动,特别是与设备维修和服务相关的出差任务。下面将详细探讨这些资料可能包含的关键知识点。 1. **出差频率**:通过分析每年的文件...
6. **分治策略**(Divide and Conquer):将大问题分解为小的相似子问题来解决,然后合并子问题的解得到原问题的解。典型的分治算法有归并排序、快速排序和大整数乘法等。 7. **搜索算法**:包括宽度优先搜索(BFS...
题目要求设计一个程序,处理一组固定集合,每个集合包含一定数量的TERM,判断输入的TERM数组是否包含某集合的所有TERM。程序需要在短时间内对大量输入进行响应,并提供最优时间复杂度和空间复杂度。 解决方案可以...
5. **共轭类**:在群论中,元素的共轭类是由与该元素通过某个群元素作用得到的所有元素组成的集合。题目中3S的共轭类没有给出具体定义,但可以理解为群元素的一种分类方式。 6. **正规化子与中心化子**:正规化子N...
- **集合的覆盖**:集合中的所有元素都被某关系覆盖。 - **集合的划分**:将集合分割为若干不相交子集的过程。 - **等价关系**:同时满足自反性、对称性和传递性的关系。 - **等价类**:等价关系下元素所属的分类。 ...