AcWing 92. 递归实现指数型枚举
原题链接
简单
作者:
L_51
,
2021-03-09 19:47:04
,
所有人可见
,
阅读 181
import java.util.Scanner;
public class Main {
static int N = 16;
static int n;
static int[] state = new int[N]; // 状态 0表示还未考虑 1表示未选 2表示选
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
dfs(1); // 编号从1开始
}
public static void dfs(int u) {
if (u == n + 1) {
for (int i = 1; i <= n; i ++) {
if (state[i] == 2) {
System.out.print(i + " ");
}
}
System.out.println();
return;
}
state[u] = 1;
dfs(u + 1); // 第一个分支 不选
state[u] = 0; // 恢复现场
state[u] = 2;
dfs(u + 1); // 第二个分支 选
// state[u] = 0;
}
}