poj 2411 Mondriaan's Dream 状压dp入门
来源:互联网 发布:美发免费收银软件 编辑:程序博客网 时间:2024/05/17 06:49
题意:
求h*w的矩形被1*2的小矩形覆盖的方案数。
分析:
状压dp入门,《挑战程序设计竞赛》上讲的很好,好几天才看懂。
代码:
#include <iostream>using namespace std;__int64 ans[16][16];int n,m;__int64 dp[2][1<<16];__int64 solve(){int i,j,used;memset(dp,0,sizeof(dp));__int64 *crt=dp[0],*nxt=dp[1];crt[0]=1;for(i=n-1;i>=0;--i)for(j=m-1;j>=0;--j){for(used=0;used<(1<<m);++used){if(used>>j&1)nxt[used]=crt[used&(~(1<<j))];else{__int64 res=0;if(j+1<m&&!(used>>(j+1)&1))res+=crt[used|1<<(j+1)];if(i+1<n)res+=crt[used|(1<<j)];nxt[used]=res;}}swap(crt,nxt);}return crt[0];}int main(){while(scanf("%d%d",&n,&m)==2){if(n==0&&m==0)break;memset(ans,-1,sizeof(ans));if(n<m)swap(n,m);if(ans[n][m]!=-1){printf("%I64d\n",ans[n][m]);continue;}if((n*m)%2==1)ans[n][m]=0;elseans[n][m]=solve();printf("%I64d\n",ans[n][m]);}return 0;}
0 0
- poj 2411 Mondriaan's Dream 状压dp入门
- POJ 2411 Mondriaan's Dream (状压DP)
- Mondriaan's Dream - POJ 2411 状压dp
- POJ 2411 Mondriaan's Dream (状压DP)
- poj 2411 Mondriaan's Dream 状压dp
- poj 2411 Mondriaan's Dream(状压dp)
- POJ 2411 Mondriaan's Dream 状压dp
- POJ 2411 Mondriaan's Dream ( 状压DP )
- Mondriaan's Dream POJ - 2411 状压DP
- POJ 2411 Mondriaan's Dream (状压dp)
- POJ 2411 Mondriaan's Dream 状压dp
- [POJ 2411]Mondriaan's Dream:状压DP
- POJ 2411 Mondriaan's Dream (状压DP)
- poj 2411 Mondriaan's Dream 【状压dp】
- poj 2411 Mondriaan's Dream (状态压缩dp 入门)
- poj 2411 Mondriaan's Dream dp
- poj 2411 Mondriaan's Dream 【dp】
- POJ 2411 Mondriaan's Dream(状压DP)
- linux应用程序如何运行
- 沉浸式状态栏
- oracle错误代码
- 骨牌铺方格
- IT常用英语
- poj 2411 Mondriaan's Dream 状压dp入门
- HDU--2212 DFS【水题】
- java中的继承与组合
- PageRank算法
- Python 正则表达式
- windows 8、8.1、10 Administrator管理员账户 无法使用应用商店 解决方案
- 【安卓笔记】硬盘缓存工具类的编写
- hdu 1853 Cyclic Tour 最小费用最大流
- 算法提高 6-17复数四则运算