zoukankan      html  css  js  c++  java
  • USACO sec2.1 Hamming Codes

    直接枚举就行了,不带回溯的搜索。

    /*
    PROG : hamming
    LANG : C++
    */
    # include <stdio.h>
    
    # define id(x) ((x)>>3)
    # define of(x) ((x)&0x7)
    # define get(x) ((h[id(x)]>>of(x))&0x1)
    # define set(x) (h[id(x)] |= (0x1<<of(x)))
    
    int n, b, d;
    char h[(1<<5) + 1];
    int sol[70];
    /*************************************************/
    int dis(int x, int y)
    {
        int s = x ^ y, r = 0;
        while (s)
        {
            ++r;
            s &= s-1;
        }
        return r;
    }
    
    void search(int cur, int cnt)
    {
        int i, j;
        if (cnt > n) return ;
        for (i = cur+1; i < (1<<b); ++i) if (!get(i))
        {
            for (j = 1; j <= cnt; ++j)
                if (dis(sol[j], i) < d) break;
            set(i);
            if (j > cnt) {sol[cnt+1] = i; search(i, cnt+1);}
        }
    }
    /*************************************************/
    void solve(void)
    {
        int i;
        scanf("%d%d%d", &n, &b, &d);
        sol[1] = 0, set(0);
        search(0, 1);
        for (i = 1; i <= n; ++i)
        {
            if (i%10 != 1) putchar(' ');
            printf("%d", sol[i]);
            if (i<n && i%10 == 0) putchar('\n');
        }
        putchar('\n');
    }
    
    int main()
    {
        freopen("hamming.in", "r", stdin);
        freopen("hamming.out", "w", stdout);
        
        solve();
        
        fclose(stdin);
        fclose(stdout);
        
        return 0;
    }
  • 相关阅读:
    回到顶部
    angularjs 复选框 单选框
    关于angularjs的ng-repeat指令
    JS字符串对象
    JS的控制语句与异常
    JS的运算符
    JS的引入方式和基础规范
    z-index及透明度opacity,利用overflow设置头像
    css的定位
    css的float属性及清除浮动
  • 原文地址:https://www.cnblogs.com/JMDWQ/p/2649166.html
Copyright © 2011-2022 走看看