Java递归求某个集合的所有子集组成的集合,即幂集

方法很简单,递归。

package com.junoflo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * Created by Administrator on 2017/7/21.
 */
public class PowerSet {
    public static void powerSet(int i, List set, List tmp){
        if(i > set.size()){
            tmp.forEach(o -> System.out.print(o + " "));
            System.out.println();
        }else {
            int x = set.get(i-1);
            tmp.add(x);
            powerSet(i+1,set,tmp);
            tmp.remove(Integer.valueOf(x));//直接用tmp.remove(x) 编译器会以为x是下标
            powerSet(i+1,set,tmp);
        }
    }
    public static void main(String[] args) throws FileNotFoundException {
        File file = new File("C:\\Users\\Administrator\\Desktop","data");
        FileInputStream fis = new FileInputStream(file);
        System.setIn(fis);
        Scanner in = new Scanner(System.in);
        int size = in.nextInt();
        List originalSet = new ArrayList<>();
        List tmp = new ArrayList<>();
        for(int i = 0; i < size; i++){
            originalSet.add(in.nextInt());
        }
        powerSet(1,originalSet,tmp);
    }
}

你可能感兴趣的:(Java递归求某个集合的所有子集组成的集合,即幂集)