uva 11795 Mega Man‘s Missions’ 状态压缩DP

来源:互联网 发布:mac expect ssh 编辑:程序博客网 时间:2024/05/17 07:25
#include<cstdio>#include<cstring>using namespace std;int s[100],d[1<<17];long long dp[1<<17];char str[100];int main(){int T,n,t=1;scanf("%d",&T);while(T--){scanf("%d",&n);for(int i=0;i<=n;i++){s[i]=0;    scanf("%s",str);    for(int j=0;j<strlen(str);j++)    {    if(str[j]=='1')    s[i]|=(1<<j);    }}int len=(1<<n)-1;d[0]=s[0];for(int i=1;i<=len;i++){d[i]=s[0];for(int j=0;j<n;j++)if((i>>j)&1)d[i]|=s[j+1];}memset(dp,0,sizeof(dp));dp[0]=1;for(int i=1;i<=len;i++){    for(int j=0;j<n;j++){if((d[i^(1<<j)]>>j)&1)dp[i]+=dp[i^(1<<j)];}} printf("Case %d: %lld\n",t++,dp[len]);} }

原创粉丝点击