Section 2.1 hamming
2017-07-17 21:17
302 查看
题目大意
给出 N,B 和 D,要求找出 N 个由0或1组成的编码(1 <= N <= 64),每个编码有 B 位(1 <= B <= 8),使得两两编码之间至少有 D 个单位的“Hamming距离”(1 <= D <= 7)。 “Hamming距离”是指对于两个编码,他们二进制表示法中的不同二进制位的数目。看下面的两个编码 0x554 和 0x234(0x554和0x234分别表示两个十六进制数): 0x554 = 0101 0101 0100 0x234 = 0010 0011 0100 不同位 xxx xx
输入格式
line 1: N B D
输出格式
N 个编码(用十进制表示),要排序,十个一行。如果有多解,你的程序要输出这样的解:假如把它化为2^B进制数,它的值要最小。
样例输入
16 7 3
样例输出
0 7 25 30 42 45 51 52 75 76 82 85 97 102 120 127
题解
比较水的一题,按照大小编码,这样取到的N个数便是最小的。然后就是深度搜索,依此比较。
代码
#include<stdio.h> #include<math.h> int N=0,B=0,D=0,flag=0; int a[70][10]={0}; int tran(int i,int b) { int j=0; while(b>0) { a[i][j]=b%2; b=b/2; j++; } return 0; } int bijiao(int i,int j) { int k,count=0; for(k=0;k<B;k++) if(a[i][k]!=a[j][k]) count++; if(count>=D) return 1; else return 0; } int h(int cur) { int i,f=0; int t; t=pow(2,B); if(cur>=N) { flag=1; return 0; } else {if(flag==0) for(i=0;i<t&&flag==0;i++) { f=0; tran(cur,i); int j; for(j=0;j<cur;j++) if(bijiao(j,cur)==0) { // tran(cur,0); f=1; break; } if(f==0) h(cur+1); } } return 0; } int main() { int i,j,p[70]={0},k; int t,c=0; scanf("%d %d %d",&N,&B,&D); h(0); for(i=0;i<N;i++) { for(j=0;j<B;j++) { t=pow(2,j); p[i]=p[i]+a[i][j]*t; } } i=0; for(k=0;k<N-1;k++) { i++; if(i==10) { i=0; printf("%d\n",p[k]); continue; } printf("%d ",p[k]); } printf("%d\n",p[N-1]); return 0; }
相关文章推荐
- USACO Section 2.1 Hamming Codes - 题意相当坑爹..很无聊..
- USACO-Section2.1 Hamming Codes [搜索]
- Section 2.1 Hamming Codes
- 【USACO Training】Section 2.1 Ordered Fractions
- USACO Section 2.1 Ordered Fractions
- USACO section 2.1 Ordered Fractions(简单数学求约数加个排序)
- USACO-Section2.1 Ordered Fractions[其他]
- Section 2.1 castle
- USACO-Section2.1 sort3[排序][递归]
- USACO Section 2.1: Ordered Fractions
- USACO Section2.1 Ordered Fractions 解题报告
- USACO Section 2.1 The Castle
- USACO Section 2.1 Healthy Holsteins
- USACO-Section2.1 Sorting a Three-Valued Sequence[排序]
- Section 2.1 frac1
- USACO Section 2.1 The Castle
- USACO Section2.1 Sorting a Three-Valued Sequence 解题报告
- usaco2.1 hamming(blog 写到一半发现大事不妙
- Section 2.1 sort3
- USACO Section 2.1: Prob Sorting A Three-Valued Sequence