#YHM12004. 子集生成
子集生成
题目:子集生成
题目描述
给定一个正整数 n
,要求生成从 1 到 n
的所有子集,并按照字典序输出这些子集。子集可以为空集,也可以包含 1 到 n
中的任意数量的元素。请使用递归的方法解决该问题。
输入格式
一个正整数 n
,其中 1 <= n <= 10
。
输出格式
输出所有子集,每个子集占一行,子集中的元素按升序排列,元素之间用空格分隔。空集用空行表示。子集按照字典序排列输出。
示例
- 输入:
3
- 输出:
1
1 2
1 2 3
1 3
2
2 3
3
提示
可以通过递归的方式来生成子集。对于每个从 1 到 n
的数字,都有两种选择:将其加入当前子集,或者不加入。从空集开始,逐步考虑每个数字,递归地生成所有可能的子集。具体步骤如下:
- 定义一个递归函数,该函数接受当前处理到的数字、当前已经生成的子集作为参数。
- 当处理完所有数字时,将当前子集添加到结果列表中。
- 对于当前数字,分别考虑两种情况:
- 不将当前数字加入子集,继续递归处理下一个数字。
- 将当前数字加入子集,然后递归处理下一个数字。在递归返回后,需要将该数字从子集中移除(回溯操作),以便尝试其他可能的组合。
- 生成所有子集后,对结果列表进行排序以保证按字典序输出。