给定一个集合s(没有重复元素), 输出它所有的子集 输入 1 2 3 输出 1, 2, 12, 3, 13, 23, 123
时间: 2023-05-01 10:02:52 浏览: 250
输出集合的所有子集
题意:给定一个集合s(没有重复元素),输出它所有的子集。例如,输入1 2 3,输出子集1, 2, 12, 3, 13, 23, 123。
解题思路:
可以用二进制位运算的方法来解决。以输入的集合为{1, 2, 3}为例,我们可以用三位二进制数来表示子集。例如,二进制数“001”表示子集{3},二进制数“101”表示子集{1, 3}。那么,如果我们用一个循环变量i从0到2^n-1(n为集合s的元素个数),对于每个二进制数i,它的每一位表示该元素是否在子集中出现。如果第j位为1,就把集合中第j个元素加入子集中。
代码示例:(Python语言)
s = input().split() # 输入集合
n = len(s) # 集合元素个数
for i in range(2**n): # 枚举所有子集
subset = [] # 子集初始化为空
for j in range(n):
if (i >> j) & 1: # 检查第j位是否为1
subset.append(s[j]) # 将第j个元素加入子集
print(', '.join(subset)) # 输出子集
阅读全文