USACO2.1.5 Hamming Codes (hamming)
2015-01-27 19:54
337 查看
我们只要按递增顺序搜索要求的n个数,然后跟前面的数判断距离是否大于d,在找到一组解后它肯定是最小的,输出。 数据不大,暴力搜索即可。
注意:
1. 0是必须出现的。
2. b给出了搜索的最大值:2^b-1
3. 计算两个数a,b的距离,只要计算a xor b的数的二进制形式中1的个数,非常方便。
注意:
1. 0是必须出现的。
2. b给出了搜索的最大值:2^b-1
3. 计算两个数a,b的距离,只要计算a xor b的数的二进制形式中1的个数,非常方便。
/* ID:xsy97051 PROB:hamming LANG:C++ */ #include <iostream> #include <cstdio> #include <cstring> using namespace std; int n,b,d,num[65],len=1; int pan(int x,int y) { int ans=0,temp=x^y; while(temp>0) { ans++; temp=temp-(temp&(-temp)); } return ans; } int main() { freopen("hamming.in","r",stdin); freopen("hamming.out","w",stdout); cin>>n>>b>>d; //n ge b wei d juli num[1]=0; for(int i=1;i<(1<<b);i++) { int flag=1; for(int j=1;j<=len;j++) if(pan(i,num[j])<d) { flag=0; break; } if(flag) { len++; num[len]=i; } if(len==n) break; } for(int i=1;i<=len;i++) { cout<<num[i]; if((i%10==0) || (i==len)) cout<<endl; else cout<<" "; } return 0; }
相关文章推荐
- USACO2.1.5 Hamming Codes (hamming)
- usaco 2.1.5 hamming
- USACO 2.1.5 Hamming Codes
- USACO:2.1.5 Hamming Codes 汉明码
- usaco2.1.5(hamming)
- usaco 2.1.5 hamming
- usaco 2.1.5 Hamming Codes
- USACO 2.1 Hamming Codes (hamming)
- USACO 2.1.5 Hamming Codes
- USACO2.1.5--Hamming Codes
- USACO 2.1.5 Hamming Codes
- [USACO 2.1.5] Hamming Codes
- Hamming Codes_usaco2.1.5_codevs1454
- USACO 2.1 Hamming Codes
- USACO 2.1 海明码 Hamming Codes
- USACO Section 2.1 Hamming Codes (dfs)
- 2.1.5 Hamming Codes
- USACO 2.1 Hamming Codes
- USACO-Hamming Codes(枚举)
- USACO Hamming Codes