#include using namespace std; const int N = 110; // 定义最大数组大小 vector vec; // 用于存储当前生成的子集 int n; // 输入的数字n,表示从1到n生成子集 // 深度优先搜索函数,用于生成所有可能的子集 // u: 当前处理的数字 void dfs(int u) { // 打印当前生成的子集 for (int i = 0; i < vec.size(); i++) cout << vec[i] << " "; cout << endl; // 如果已经处理完所有数字,返回 if (u == n + 1) return; // 尝试将每个数字添加到当前子集中 for (int i = 1; i <= n; i++) { // 确保子集中的数字按升序排列,避免重复 if (vec.size() && i <= vec.back()) continue; vec.push_back(i); // 将数字i添加到子集中 dfs(u + 1); // 递归处理下一个数字 vec.pop_back(); // 回溯,移除最后添加的数字 } } int main() { cin >> n; // 输入数字n dfs(1); // 从数字1开始生成子集 return 0; }