DFS求集合所有子集

对应代码中的数组b,空集为空行

dfs集合子集

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.util.ArrayList;
/**
 * DFS求数组的全部子集
 */
public class Try001 {
    //a为原数组,b为子集,n计数
    public static void dfs(ArrayList<Integer> a, ArrayList<Integer> b, int n){
        if(n == a.size()) { //终止条件
            //输出子集的值,空行代表空集
            for (Integer integer : b)
                System.out.print(integer + " ");
            System.out.println();//换行
            return;
        }
        //选择添加
        b.add(a.get(n));
        dfs(a,b,n+1);
        //不选择添加
        b.remove(a.get(n));
        dfs(a,b,n+1);
    }
    public static void main(String[] args) {
        ArrayList<Integer> a = new ArrayList<>();
        ArrayList<Integer> b = new ArrayList<>();
        for(int i = 1; i <= 3; i++){
            a.add(i);//初始化集合
        }
        dfs(a, b, 0);
    }
}