思路就是:先给数组排序,然后从大的开始给两个子数组分配,把当前数给两个数组中和比较小的那个数组
int[] aa={11,7,2,5,9,21};
int[] bb = new int[0];
int[] cc = new int[0];
int c = 0;
int b = 0;
Arrays.sort(aa);
for(int i = 0;i<aa.length ; i++){
if(b >= c){
c = c+aa[aa.length -1-i];
cc =java.util.Arrays.copyOf(cc,cc.length+1);
cc[cc.length-1] = aa[aa.length -1-i];
}else {
b = b+aa[aa.length -1-i];
bb =java.util.Arrays.copyOf(bb,bb.length+1);
bb[bb.length-1] = aa[aa.length -1-i];
}
}
for (int i : bb){
System.out.print("BB["+i+"]="+i+",");
}