JOJ 2474:Tile My Corridor 平铺棋盘 状态压缩解法
2011-10-07 19:22
253 查看
dfs找状态没找明白 , 直接手写的状态转移 , 反正就2^2的情况。
#include <cstdio> #include <cstring> /* const int mod=2008; int f[106]; int main () { f[0]=1; f[1]=2; f[2]=11 ; f[3]=7*f[1]+2*f[2]+2; f[4]=f[3]*2+f[2]*7+f[1]*6+f[0]*2; for (int i=5 ; i<105 ; ++i) { f[i]=(f[i-1]*2+f[i-2]*7+f[i-3]*6+f[i-4]*2+f[i-5]*2)%mod; } int n; while (scanf("%d",&n),n) { printf("%d\n",f ); } return 0; } */ const int mod=2008; int dp[105][4]; /* void dfs(int r , int c , int sta , int pre) { if(c>=2) { if(c==2)dp[r][sta]=(dp[r][sta]+dp[r-1][pre])%mod; return; } dfs(r , c+1 , sta<<1 , pre<<1|1);//no plant dfs(r , c+1 , sta<<1|1 , pre<<1|1);//1 if(c==0)dfs(r , c+1 , 1 , 0);//1+4 if(c==1 && sta==1 && pre==0)dfs(r , c+1 , 3 , 0); dfs(r , c+2 , sta<<2|3 , pre<<2|3);//2. if(c==0)dfs(r , c+1 , sta<<1|1 , pre<<1);//3 if(c==1 && pre==1)dfs(r , c+1 , sta<<1|1 , 2); if(c==1 && sta==0) dfs(r , c+1 , 1 , 0);//4 if(c==0) dfs(r , c+2 , 3 , 1);//5 if(c==0) dfs(r , c+2 , 3 , 2);//6 if(c==0) dfs(r , c+2 , 2 , 0);//7 } */ int main () { int n; while (scanf("%d",&n) , n) { memset (dp , 0 , sizeof(dp)); dp[1][0]=1;dp[1][1]=1;dp[1][2]=1;dp[1][3]=2; //for (int i=2 ; i<=n ; ++i) // dfs(i , 0 , 0 , 0); for (int i=2 ; i<=n ; ++i) { dp[i][0]=(dp[i][0]+dp[i-1][3])%mod;//no dp[i][2]=(dp[i][2]+dp[i-1][3])%mod;//1 dp[i][1]=(dp[i][1]+dp[i-1][3])%mod;//1 dp[i][3]=(dp[i][3]+dp[i-1][3])%mod;//1+1 dp[i][3]=(dp[i][3]+dp[i-1][3])%mod;//2 dp[i][1]=(dp[i][1]+dp[i-1][2])%mod;//3 dp[i][2]=(dp[i][2]+dp[i-1][1])%mod;//3 dp[i][3]=(dp[i][3]+dp[i-1][0])%mod;//3+3 dp[i][3]=(dp[i][3]+dp[i-1][1])%mod;//3+1 dp[i][3]=(dp[i][3]+dp[i-1][2])%mod;//3+1 dp[i][1]=(dp[i][1]+dp[i-1][0])%mod;//4 dp[i][3]=(dp[i][3]+dp[i-1][0])%mod;//4+1 dp[i][2]=(dp[i][2]+dp[i-1][0])%mod;//5 dp[i][3]=(dp[i][3]+dp[i-1][0])%mod;//5+1 dp[i][3]=(dp[i][3]+dp[i-1][1])%mod;//6 dp[i][3]=(dp[i][3]+dp[i-1][2])%mod;//7 } printf("%d\n" , dp [3]%mod); } return 0; }
相关文章推荐
- POJ 1321 经典棋盘问题 的搜索和状态压缩解法
- POJ3279 Fliptile —— 状态压缩 + 模拟
- joj 2620: Count Square 状态压缩DP N*M的0,1方格,每一个2*2的小方格有一个价值,求整个方格的最大价值
- poj 1321 状态压缩dp-棋盘问题
- POJ 3279 Fliptile(状态压缩+暴力)
- 状态压缩棋盘问题2道 sgu131&poj1038
- poj 1753 棋盘翻转(BFS+状态压缩)
- poj 1038 状态压缩~棋盘覆盖
- POJ1753 状态压缩(+BFS) + 棋盘问题
- POJ2965 状态压缩+BFS,DFS枚举,以及大牛的解法~
- POJ 1321 棋盘问题(状态压缩DP)
- 棋盘放车(有些点不能放)(DP状态压缩)
- 1516. 棋盘上的车[组合数学][状态压缩]
- Fliptile POJ - 3279 (状态压缩+枚举) && Flip Game POJ - 1753(状态压缩+bfs暴力)
- POJ2965 BFS(自己写)+状态压缩 OR 偶数格子的棋盘规律
- Codevs_P1358 棋盘游戏(状态压缩动态规划)
- poj1321 棋盘问题,状态压缩dp
- JOJ 2190: Mondriaan's Dream (状态压缩DP +DFS)
- 状态压缩(棋盘问题+hdu3254+poj1185+hud2553)
- 状态压缩DP-棋盘模型总结