superman

聚精会神搞建设 一心一意谋发展
posts - 190, comments - 17, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Section 2.1 - Hamming Codes

Posted on 2009-03-27 11:49 superman 阅读(52) 评论(0)  编辑 收藏 引用 所属分类: USACO
 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     freopen("hamming.in""r", stdin);
 8     freopen("hamming.out""w", stdout);
 9 
10     int N, B, D, x[64= { 0 };
11 
12     cin >> N >> B >> D;
13 
14     x[0= 0;
15     for (int k = 1; k < N; k++)
16         for (int i = x[k - 1+ 1; i <= (1 << B) - 1; i++)
17         {
18             int j;
19             for (j = 0; j < k; j++)
20             {
21                 int cnt = 0, tmp = 1;
22                 for (int p = 0; p < B; p++)
23                 {
24                     if ((i & tmp) != (x[j] & tmp))
25                         cnt += 1;
26                     tmp *= 2;
27                 }
28 
29                 if (cnt < D)
30                     break;
31             }
32 
33             if (j == k)
34             {
35                 x[k] = i;
36                 break;
37             }
38         }
39 
40     for (int i = 0; i < N; i++)
41     {
42         cout << x[i];
43         if ((i + 1% 10 == 0)
44             cout << endl;
45         else
46         {
47             if (i + 1 == N)
48                 cout << endl;
49             else
50                 cout << ' ';
51         }
52     }
53 
54     return 0;
55 }
56 

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理