CCI 9.4 集合的所有子集

编写一个方法,返回某集合的所有子集。

package cci;

import java.util.ArrayList;

public class CCI_9_4 {
	//递归
	public static ArrayList> getSubsets(ArrayList set){
		if(set == null)
			return null;
		ArrayList> result = new ArrayList>();
		//finish condition
		if(set.size()==0){
			//empty set
			result.add(new ArrayList());
			return result;
		}
		int item = set.remove(set.size()-1);
		ArrayList> subsets = getSubsets(set);
		result.addAll(subsets);
		for(ArrayList subset : subsets){
			ArrayList newSet = new ArrayList(subset);
			newSet.add(item);
			result.add(newSet);
		}
		return result;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayList case1 = new ArrayList();
		for(int i=0; i<3; i++)
			case1.add(i+1);
		ArrayList> result = getSubsets(case1);
		for(ArrayList subset : result){
			for(Integer item : subset){
				System.out.print(item + " ");
			}
			System.out.println();
		}

	}

}


你可能感兴趣的:(CareerCup,递归)