首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

求bit位中一的总个数为n的所有整数集合

2012-11-06 
求bit位中1的总个数为n的所有整数集合public class TTT {public static void main(String[] args) {int[]

求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);}}}

热点排行