• UVA


    状态压缩dp

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<string>
    #include<iostream>
    #define maxn 16
    using namespace std;
    
    long long dp[1<<maxn];
    long long weapon[1<<maxn];
    int robot[maxn];
    char s[maxn+10];
    
    int main()
    {
        int t,n,ca=1;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            scanf("%s",s);
            int ini=0;
            for(int i=0;i<n;i++)
                if(s[i]=='1')
                    ini|=(1<<i);
    
            for(int i=0;i<n;i++)
            {
                scanf("%s",s);
                robot[i]=0;
                for(int j=0;j<n;j++)
                    if(s[j]=='1')
                        robot[i]|=(1<<j);
            }
    
            int all=(1<<n)-1;
    
            for(int i=0;i<=all;i++)
            {
                weapon[i]=ini;
                for(int j=0;j<n;j++)
                    if(i&(1<<j))
                        weapon[i]|=robot[j];
            }
    
            dp[0]=1;
    
            for(int i=1;i<=all;i++)
            {
                dp[i]=0;
                for(int j=0;j<n;j++)
                {
                    if(i&(1<<j)&&(weapon[i-(1<<j)]&(1<<j)))
                        dp[i]+=dp[i-(1<<j)];
                }
            }
            printf("Case %d: %lld
    ",ca++,dp[all]);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    模块化工具require 学习笔记
    学习Jade模板引擎
    通过border来实现各种三角符号
    使用vscode 编译 sass
    Javascript 运行机制
    Vue调试工具 vue-devtools
    MVVM框架
    通信类
    面向对象
    原型和原型链
  • 原文地址:https://www.cnblogs.com/yours1103/p/3845173.html
Copyright © 2020-2023  润新知