求bit位中1的总个数为n的所有整数集合
public class TTT {public static void main(String[] args) {int[] array = new int[31];new TTT().arrange(array, array.length, 3, 0);}public void arrange(int[] array, int left, int mNum, int start) {if (mNum == 0) {for (int i = 0; i < array.length; i++) {System.out.print(array[i]);}System.out.print("====");//print the valueint sum = 0;for (int i = 0; i < array.length; i++) {if (array[i] == 1) {sum += 1 << i;}}System.out.println(sum);} else if (mNum == left) {for (int i = 0; i < array.length; i++) {if (array.length - i <= mNum) {array[i] = 1;}System.out.print(array[i]);}System.out.print("====");//print the valueint sum = 0;for (int i = 0; i < array.length; i++) {if (array[i] == 1) {sum += 2 << i;}}System.out.println(sum);} else {//assign 0, reset bits after start to 0./*for (int i = 0; i < array.length && i >= start; i++) {array[i] = 0;}*/array[start] = 0;arrange(array, left - 1, mNum, start + 1);//clean array for next searchfor (int i = 0; i < array.length; i++) {if (i >= start) {array[i] = 0;}}//assign 1array[start] = 1;arrange(array, left - 1, mNum-1, start + 1);}}}