POJ2411(状态压缩DP)

来源:互联网 发布:质量数据分析管理办法 编辑:程序博客网 时间:2024/05/19 09:47
#include <stdio.h>#include <string.h>long long dp[12][2050];int ms,h,w;bool check(int x){while(x){if((x&3)==3) x=x>>2;else if(x&1) return 0;else x=x>>1;}return 1;}int main(){while(scanf("%d %d",&h,&w),h|w){if(h&w&1) {printf("0\n");continue;}if(w>h) w^=h^=w^=h;ms=1<<w;memset(dp,0,sizeof(dp));for(int i=0;i<ms;++i)if(check(i)) dp[0][i]=1;for(int i=1;i<h;++i)for(int j=0;j<ms;++j)for(int k=0;k<ms;++k)if((j|k)==ms-1&&dp[0][j&k]) dp[i][k]+=dp[i-1][j];printf("%lld\n",dp[h-1][ms-1]);}return 0;}


0 0
原创粉丝点击