public class PowerSet { public static void main( String args[] ) { if( args.length > 0 ) { TreeSet fin = generate( args, 0 ); Iterator iter = fin.iterator(); System.out.print( "{ \"\", " ); do { System.out.print( iter.next() ); if( iter.hasNext() ) { System.out.print( ", " ); } else { System.out.println( " }" ); } } while( iter.hasNext() ); } else { System.out.println( "{ \"\" }" ); } } private static TreeSet generate( String args[], int index ) { if( index + 1 == args.length ) { TreeSet temp = new TreeSet(); temp.add( args[ index ] ); return temp; } else { TreeSet initial = generate( args, index + 1 ); TreeSet result = new TreeSet( new PowerComparator() ); result.add( args[ index ] ); Iterator iter = initial.iterator(); while( iter.hasNext() ) { String string = ( String )( iter.next() ); result.add( string ); result.add( args[ index ] + string ); } return result; } } } // PowerSet