每个数有两个状态,分别是选和不选
将这两个状态分别用1和2来代替,1->选,2->不选
就是枚举1~n的每个数字的状态,递归树如下
import java.io.*;
class Main{
static int n;
static int[] data;
public static void dfs(int u){
if(u>n){
for(int i=1;i<=n;i++){
if(data[i]==1)
System.out.print(i+" ");
}
System.out.println();
return;
}
data[u]=2;//不选
dfs(u+1);
data[u] = 0;//恢复现场
data[u]=1;//选择
dfs(u+1);
data[u] =0;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
data = new int[n+10];
dfs(1);
br.close();
}
}
完成