1 条题解

  • 0
    @ 2026-9-30 12:58:11

    C++ :

    
    #include <cstdio>
    static char vis[1 << 15];
    static char pat[64];
    int main(){
        int m, n;
        if(scanf("%d %d", &m, &n) != 2) return 0;
        for(int t = 0; t < n; t++){
            if(scanf("%s", pat) != 1) break;
            int mask = 0, base = 0;
            for(int j = 0; j < m; j++){
                if(pat[j] == '*') mask |= 1 << j;
                else if(pat[j] == '1') base |= 1 << j;
            }
            int sub = mask;
            while(1){
                vis[base | sub] = 1;
                if(sub == 0) break;
                sub = (sub - 1) & mask;
            }
        }
        int cnt = 0;
        for(int i = 0; i < (1 << m); i++) if(vis[i]) cnt++;
        printf("%d\n", cnt);
        return 0;
    }
    
    
    • 1

    信息

    ID
    2830
    时间
    1000ms
    内存
    256MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者