POJ 2411 Mondriaan's Dream 贴砖块类状态压缩DP入门
2013-04-19 17:03
405 查看
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define LL long long int n, m; LL dp[13][2666]; LL cnt; int x, M; void dfs(int y, int pre, int now) { if(y == m) { if(pre == M-1) { dp[x+1][now] += cnt; // printf("x = %d cnt = %d\n", x ,cnt); } return; } if(pre&(1<<y) && !(now&(1<<y)) ) { if(y+1 < m) dfs(y+2, pre, now|(1<<y)|(1<<(y+1))); dfs(y+1, pre, now); } if(!(pre&(1<<y)) && !(now&(1<<y))) dfs(y+1, pre|(1<<y), now|(1<<y)); } int main() { int i, j; while( ~scanf("%d%d", &n, &m) && n && m) { memset(dp, 0, sizeof(dp)); M = (1<<m); dp[0][M-1] = 1; for(i = 0; i < n; i++) for(j = 0; j < M; j++) if(dp[i][j]){ cnt = dp[i][j]; x = i; // printf("i = %d j = %d\n", i, j); dfs(0, j, 0); } printf("%lld\n", dp [M-1]); } return 0; }
相关文章推荐
- poj 2411 Mondriaan's Dream (状态压缩dp 入门)
- POJ-2411 Mondriaan's Dream 状态压缩+DP
- poj 2411 状态压缩DP 铺砖块
- HDOJ 1400 & POJ 2411 - Mondriaan's Dream 状态压缩DP
- 【poj 2411】Mondriaan's Dream 状态压缩DP
- 状态压缩DP 入门 POJ 3254
- POJ 2411 Mondriaan's Dream(状态压缩DP)
- POJ_2411_Mondriaan's Dream【状态压缩DP】
- poj 3250 状态压缩dp入门
- poj 2411 Mondriaan's Dream(状态压缩DP)
- poj 2411 Mondriaan's Dream(压缩状态dp)
- POJ_2411_Mondriaan's Dream_状态压缩dp
- poj 2411 && zoj 1100 Mondriaan's Dream ———状态压缩dp
- poj-2411 Mondriaan's Dream (状态压缩dp)
- POJ2411 - Mondriaan's Dream(状态压缩DP)
- poj 2411 Mondriaan's Dream (状态压缩dp)
- poj 3254 状态压缩dp入门题
- POJ 2411 铺地砖 状态压缩dp入门
- POJ 2411 Mondriaan's Dream 状态压缩(DP)
- poj 2411 Mondriaan's Dream(状态压缩DP)