Skip to content

Instantly share code, notes, and snippets.

@cocodrips
Created July 6, 2013 00:31
Show Gist options
  • Save cocodrips/5938028 to your computer and use it in GitHub Desktop.
Save cocodrips/5938028 to your computer and use it in GitHub Desktop.
ある集合の部分集合を全部書きだす
ArrayList<ArrayList<Integer>> getSubsets(ArrayList<Integer> set, int index){
ArrayList<ArrayList<Integer>> allSubsets;
if(set.size() == index){
allSubsets = new ArrayList<ArrayList<Integer>>();
allSubsets.add(new ArrayList<Integer>()); //空集合追加
}else{
allSubsets = getSubsets(set, index+1);
int item = set.get(index);
ArrayList<ArrayList<Integer>> moreSubset = new ArrayList<ArrayList<Integer>>();
for (ArrayList<Integer> subset : allSubsets) {
ArrayList<Integer> newSubset = new ArrayList<Integer>();
newSubset.addAll(subset); //いままでの全部いれたのと
newSubset.add(item); //新しい数字をたして
moreSubset.add(newSubset); //新しいArrayListを作ってmoreにいれる!
}
allSubsets.addAll(moreSubset);
}
return allSubsets;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment