DFS实现指数型枚举
题目描述
从1~n这n个整数中随机选取任意多个,输出所有可能的选择方案。
输入描述
输入一个整数n。
输出描述
每行输出一种方案。
同一行内的数必须升序排列,相邻两个数用恰好1个空格隔开。
对于没有选任何数的方案,输出空行。
样例输入
3
样例输出
3
2
2 3
1
1 3
1 2
1 2 3
代码详解
展开查看
n = int(input()) st = [0 for i in range(n+1)] #记录每个数的状态,0表示还没考虑,1表示选,2表示不选 def dfs(x): if x > n: for i in range(1, n+1): if st[i] == 1: print(i, end=" ") print() return #不选 st[x] = 2 dfs(x+1) st[x] = 0 #恢复现场 #选 st[x] = 1 dfs(x+1) st[x] = 0 #恢复现场 dfs(1)
运行结果
展开查看
3 3 2 2 3 1 1 3 1 2 1 2 3