/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public ArrayList<ArrayList<Integer>> subsets(int[] S) {
int len = S.length;
ArrayList<ArrayList<Integer>> subsets = new ArrayList<ArrayList<Integer>>();
//subsets.add(new ArrayList<Integer>()); //for adding the empty list
for(int i
= 0; i
< Math.
pow(2,len
); i
++) { //O( len*len) not sure int count = 0, t = i;
ArrayList<Integer> subset = new ArrayList<Integer>();
for(;t != 0; count++, t = t >> 1) {
// while(t != 0) {
if((t & 1) != 0) {
subset.add(S[count]);
}
// count++;
// t = t >> 1;
}
subsets.add(subset);
}
return subsets;
}
{
Ideone program = new Ideone();
int[] S = {1,2,3};
ArrayList<ArrayList<Integer>> result = program.subsets(S);
for(ArrayList<Integer> subset: result) {
System.
out.
print(element
+ ", "); }
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCQlwdWJsaWMgQXJyYXlMaXN0PEFycmF5TGlzdDxJbnRlZ2VyPj4gc3Vic2V0cyhpbnRbXSBTKSB7CiAgICAgICAgQXJyYXlzLnNvcnQoUyk7CiAgICAgICAgaW50IGxlbiA9IFMubGVuZ3RoOwogICAgICAgIEFycmF5TGlzdDxBcnJheUxpc3Q8SW50ZWdlcj4+IHN1YnNldHMgPSBuZXcgQXJyYXlMaXN0PEFycmF5TGlzdDxJbnRlZ2VyPj4oKTsKICAgICAgICAvL3N1YnNldHMuYWRkKG5ldyBBcnJheUxpc3Q8SW50ZWdlcj4oKSk7CS8vZm9yIGFkZGluZyB0aGUgZW1wdHkgbGlzdCAKICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgTWF0aC5wb3coMixsZW4pOyBpKyspIHsJLy9PKCBsZW4qbGVuKSBub3Qgc3VyZQogICAgICAgICAgICBpbnQgY291bnQgPSAwLCB0ID0gaTsKICAgICAgICAgICAgQXJyYXlMaXN0PEludGVnZXI+IHN1YnNldCA9IG5ldyBBcnJheUxpc3Q8SW50ZWdlcj4oKTsKICAgICAgICAgICAgZm9yKDt0ICE9IDA7IGNvdW50KyssIHQgPSB0ID4+IDEpIHsKICAgICAgICAgICAgLy8gd2hpbGUodCAhPSAwKSB7CiAgICAgICAgICAgICAgICBpZigodCAmIDEpICE9IDApIHsKICAgICAgICAgICAgICAgICAgICBzdWJzZXQuYWRkKFNbY291bnRdKTsKICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICAgICAvLyBjb3VudCsrOwogICAgICAgICAgICAgICAgLy8gdCA9IHQgPj4gMTsKICAgICAgICAgICAgfSAKICAgICAgICAgICAgc3Vic2V0cy5hZGQoc3Vic2V0KTsKICAgICAgICB9IAogICAgICAgIHJldHVybiBzdWJzZXRzOwogICAgfSAKICAgICAKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJeyAKCQlJZGVvbmUgcHJvZ3JhbSA9IG5ldyBJZGVvbmUoKTsKCQlpbnRbXSBTID0gezEsMiwzfTsKCQlBcnJheUxpc3Q8QXJyYXlMaXN0PEludGVnZXI+PiByZXN1bHQgPSBwcm9ncmFtLnN1YnNldHMoUyk7CgkJZm9yKEFycmF5TGlzdDxJbnRlZ2VyPiBzdWJzZXQ6IHJlc3VsdCkgewoJCQlTeXN0ZW0ub3V0LnByaW50KCJbICIpOwoJCQlmb3IoSW50ZWdlciBlbGVtZW50OnN1YnNldCkgewoJCQkJU3lzdGVtLm91dC5wcmludChlbGVtZW50ICsgIiwgIik7CgkJCX0gCgkJCVN5c3RlbS5vdXQucHJpbnRsbigiXSIpOwoJCX0gCgl9Cn0=
[ ]
[ 1, ]
[ 2, ]
[ 1, 2, ]
[ 3, ]
[ 1, 3, ]
[ 2, 3, ]
[ 1, 2, 3, ]