USACO Hamming Codes 求汉明距离

来源:互联网 发布:安卓软件推荐 知乎 编辑:程序博客网 时间:2024/06/04 22:46

参考思路:http://www.cnblogs.com/huachiwoo/archive/2011/05/03/2034999.html
求汉明距离:http://www.cnblogs.com/huachiwoo/archive/2011/05/02/2034158.html
                        http://www.cnblogs.com/huachiwoo/archive/2011/05/01/2034155.html

注意异或操作符 ^  
以及右移位 >>

/*ID: wangxin12PROG: hammingLANG: C++*/#include <iostream>#include <fstream>#include <vector>#include <string>using namespace std;int N, B, D;vector<int> result;int Power(int index) {if(index == 1) return 2;return 2 * Power(index - 1);}bool check(int i) {for(int k = 0; k < result.size(); k++) {int dis = 0;int c = i ^ result[k];  //异或 XORwhile(c) {dis += c & 0x01; //dis += c & 0x01;c >>= 1;/* //another方法c &= (c-1);dis++;  */}if(dis < D) return false; }return true;}int main() {//inputifstream fin("hamming.in");fin>>N>>B>>D;fin.close();result.push_back(0);//calculatefor(int i = 1; i <= Power(B) - 1; i++) {if(result.size() < N) {if(check(i)) result.push_back(i);}else break;}//Outputofstream fout("hamming.out");for(int j = 0; j < result.size(); j++) {if(j == result.size() - 1) {fout<<result[j]<<endl;continue;}if(j % 10 == 9) fout<<result[j]<<endl;else fout<<result[j]<<" ";}fout.close();    return 0;}



原创粉丝点击