public class Untitled2 { private int[] base;
public Untitled2(int count) {
base = new int[count];
for (int i = 0; i < count; i++) {
base[i] = (int)Math.pow( 10, i );
} } /**
*
*/
public static void main(String[] args) { int[] source = new int[]{1,2,3};
int[] result = new int[]{0};
Untitled2 t = new Untitled2(source.length);
t.get( source,result,0 );
} public void get( int[] source, int[]result, int index ){
for (int i = 0; i < source.length; i++) {
result[0] += source[i] * base[source.length-1-index];
if( index < source.length - 1 ){
index++;
get( source, result, index );
index--;
result[0] -= source[i] * base[source.length-1-index];
} else {
System.out.println(result[0]);
result[0] -= source[i]*base[source.length-1-index];
}
} }
}参考参考吧~~~
public Untitled2(int count) {
base = new int[count];
for (int i = 0; i < count; i++) {
base[i] = (int)Math.pow( 10, i );
} } /**
*
*/
public static void main(String[] args) { int[] source = new int[]{1,2,3};
int[] result = new int[]{0};
Untitled2 t = new Untitled2(source.length);
t.get( source,result,0 );
} public void get( int[] source, int[]result, int index ){
for (int i = 0; i < source.length; i++) {
result[0] += source[i] * base[source.length-1-index];
if( index < source.length - 1 ){
index++;
get( source, result, index );
index--;
result[0] -= source[i] * base[source.length-1-index];
} else {
System.out.println(result[0]);
result[0] -= source[i]*base[source.length-1-index];
}
} }
}参考参考吧~~~
存在以下元素:
a b c d e f g ,对应的存在一个标记位,0 代表没有选择 1 代表有选择
0 0 0 0 0 0 1
0 0 0 0 0 1 0
.....
1 1 1 1 1 1 1这个就是一个二进制而已,所以最后的结果是 (2 ^ n) - 1 (如果全部不选也算上的话就是 2 ^ n)
你要在程序做也只是像上面的那样,弄一个变量 index出来,从 1 到 (2 ^ n) - 1循环
然后不断和相应的位做“与”操作就可以知道相应的元素选中没有