所谓幂集(Power Set), 就是原集合中所有的子集(包括全集和空集)构成的集族。
输入一个整数n(0<=n<=10)
输出由整数1~n构成的集合{1,2,3,...,n}的幂集。
输入格式:
整数n(0<=n<=10)
输出格式:
{1,2,3,...,n}的幂集,每行一个子集,子集不可重复,子集之间顺序以及子集元素之间顺序均不作要求。
输入样例1:
3
输出样例1:
{}
{1}
{2}
{3}
{1,2}
{1,3}
{2,3}
{1,2,3}
输入样例2:
0
输出样例2:
{}
参考GPT和自己的思路:
对于这个问题,可以使用递归的思想来实现幂集的生成。具体步骤如下:
具体实现代码如下(假设输入的整数为n):
def power_set(nums):
if not nums: # 集合为空,加入空子集
return [[]]
first = nums[0] # 取出集合中的第一个元素
rest = nums[1:] # 剩余元素组成的集合
res = [] # 结果集合
# 递归求解不包含第一个元素的子集
for subset in power_set(rest):
res.append(subset[:]) # 把已经求得的子集加入结果集合中
# 递归求解包含第一个元素的子集
for subset in power_set(rest):
subset.insert(0, first) # 把第一个元素加入子集中
res.append(subset) # 把已经求得的子集加入结果集合中
return res
n = int(input())
nums = [i for i in range(1, n + 1)] # 构造原集合
res = power_set(nums)
for subset in res:
print(subset) # 按照要求输出幂集
希望这个回答能够满足你对这个问题的需求,如有不明白的地方,欢迎进一步询问。