poj 2663 Tri Tiling 状压dp
2015-02-17 00:45
246 查看
题意:
给3*N(N<=30)的矩形,问有多少种用1*2的小矩形铺满的方案。
分析:
同poj2411。
代码:
给3*N(N<=30)的矩形,问有多少种用1*2的小矩形铺满的方案。
分析:
同poj2411。
代码:
#include <iostream> using namespace std; __int64 ans[32][4]; int n,m; __int64 dp[2][1<<4]; __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",&n)==1){ if(n==-1) break; m=3; memset(ans,-1,sizeof(ans)); if(n<m) swap(n,m); if(ans [m]!=-1){ printf("%I64d\n",ans [m]); continue; } if((n*m)%2==1) ans [m]=0; else ans [m]=solve(); printf("%I64d\n",ans [m]); } return 0; }
相关文章推荐
- poj 2663 Tri Tiling--状压dp
- 【POJ 2663】Tri Tiling(dp|递推)
- poj 2663 Tri Tiling 【简单数位DP】
- POJ-2663,2506 Tri Tiling 递推 | 压缩DP
- POJ 2411 + POJ 2663 + POJ 3420 小方格填充之多米诺骨牌系列(状压DP)
- poj 3254 状压dp
- POJ 3311 Hie with the Pie (状压DP)
- POJ 3254 Corn Fields 状压dp
- POJ 2663 Tri Tiling 递推
- POJ 3254 & POJ 1185(状压DP入门)
- POJ 2288 Islands and Bridges (状压DP)
- poj 2923 Relocation(状压dp)
- POJ 3254 Corn Fields (状压DP)
- POJ 2411 Mondriaan's Dream(状压DP)
- poj 1185 炮兵阵地 状压dp
- [NOI2001][POJ1185]炮兵阵地(状压dp)
- POJ 2686 Traveling by Stagecoach(状压DP)
- POJ 3279 Fliptile (状压DP)
- poj3254 Corn Fields (状压dp)
- poj 2411 Mondriaan's Dream 状压dp入门