poj2411 状压dp
Posted lmjer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poj2411 状压dp相关的知识,希望对你有一定的参考价值。
#include<cstdio> #include<algorithm> #include<cstring> using namespace std; long long dp[12][1<<11]; bool ins[1<<11]; int main(){ int n,m; while(scanf("%d%d",&n,&m)&&n){ for (int i=0;i<(1<<m);i++){ bool cnt=0,x=0; for (int j=0;j<m;j++){ if((i>>j)&1) cnt|=x,x=0; else x^=1; } ins[i]= cnt|x ? 0 : 1; } dp[0][0]=1; for (int i=1;i<=n;i++){ for (int j=0;j<(1<<m);j++){ dp[i][j]=0; for (int k=0;k<(1<<m);k++){ if((j&k)==0 && ins[j|k]) dp[i][j]+=dp[i-1][k]; } } } printf("%lld\\n",dp[n][0]); } return 0; }
以上是关于poj2411 状压dp的主要内容,如果未能解决你的问题,请参考以下文章
POJ 2411 Mondriaan's Dream -- 状压DP
POJ 2411 Mondriaan's Dream (状压DP)