usaco 2.1 hamming...枚举...
2012-11-02 12:57
459 查看
因为要求最终序列化为2^B进制数后最小,所以最小从0开始一一枚举&检验即可。
/* ID:chenjiong PROG:hamming LANG:C++ */ #include <stdio.h> #include <string.h> int N,B,D; int ans[64][9]; int num; int limit[9] = {0,1,3,7,15,31,63,127,255}; int cnt; void binary(int x,int* tmp) { tmp[cnt++] = x % 2; if ( x > 0 ) binary( x / 2,tmp); } int hamming_distance(int i,int j) { int d = 0; int k; for ( k = 0; k < 8; k++) if ( ans[i][k] != ans[j][k] ) d++; return d; } int is_accepted(int cur) { int i; for ( i = cur - 1; i >= 0; i--) if ( hamming_distance(i,cur) < D ) return false; return true; } int main() { freopen("hamming.in","r",stdin); freopen("hamming.out","w",stdout); scanf("%d%d%d",&N,&B,&D); num = 1; int x; for ( x = 1; x <= limit[B]; x++) { cnt = 0; binary(x,ans[num]); ans[num][8] = x; if ( is_accepted(num) ) num++; if ( num == N ) break; } int t = 0; int i; for ( i = 0; i < N - 1; i++) { printf("%d ",ans[i][8]); t++; if ( t == 9 && i < N - 2 ) { printf("%d\n",ans[++i][8]); t = 0; } } printf("%d\n",ans[N - 1][8]); return 0; }
相关文章推荐
- USACO 2.1 <枚举>
- USACO 2.1 Hamming Codes(位运算枚举)
- USACO-Section2.1 Healthy Holsteins [搜索][枚举]
- usaco-2.1-hamming-pass
- USACO 2.1 顺序的分数 (枚举)
- USACO-Section2.1 Hamming Codes【暴力枚举】
- USACO-Section2.1 Hamming Codes [搜索]
- USACO 2.1 Healthy Holsteins(枚举)
- USACO Section 2.1 Hamming Codes - 题意相当坑爹..很无聊..
- USACO 2.1 Hamming Codes (hamming)
- USACO section 2.1 Healthy Holsteins(枚举,二进制存储)
- usaco 2.1 hamming 2008.6.10
- USACO Section 2.1 Ordered Fractions(枚举)
- USACO section 2.1 Healthy Holsteins(枚举,二进制存储)
- usaco2.1 hamming(blog 写到一半发现大事不妙
- USACO Hamming Codes 2.1
- 枚举优化题(状态保存)——USACO3.1.3
- USACO-Arithmetic Progressions(枚举剪枝)
- USACO-Runaround Numbers(枚举)
- USACO Section 2.1: Hamming Codes