1.用mol2的方法
int count(BYTE v){
int num = 0;
while (v){
if (v % 2 == 1){
num++;
}
v/=2;
}
return num;
}
2.使用位运算
int count(BYTE v){
int num = 0;
while (v){
num += v & 0x01;
v>>1;
}
return num;
}
3.位运算(时间复杂度为O(M))
这种只考虑与1的个数相关,M为1的个数,最为巧妙
int count(BYTE v){
int num = 0;
while (v){
v&=(v-1);
num++;
}
return num;
}
4.把包含相同个数1的枚举在一起,时间复杂度不能确定。
代码就不列了