求问题的代码(python)

所谓幂集(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和自己的思路:

对于这个问题,可以使用递归的思想来实现幂集的生成。具体步骤如下:

  1. 定义一个函数,接收当前用于生成幂集的集合,以及已经生成的子集。
  2. 如果当前集合为空,即已经生成了所有的子集,将已经生成的子集加入结果集合中。
  3. 如果当前集合非空,取出集合中的第一个元素,将其加入已经生成的子集中,继续递归生成子集。
  4. 不加入第一个元素的情况下继续递归生成子集。
  5. 返回结果集合。

具体实现代码如下(假设输入的整数为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)  # 按照要求输出幂集

希望这个回答能够满足你对这个问题的需求,如有不明白的地方,欢迎进一步询问。