Poj2411 状态压缩
来源:互联网 发布:金融一体机软件系统 编辑:程序博客网 时间:2024/05/16 09:05
题目链接:http://poj.org/problem?id=2411
题意:给出一个h*w的矩形,问用1*2的方块将其完全填充的不同方式有多少种。
h,w范围很小,可用2进制来表示每一行当前的填充状态,然后由前一行状态判断当前行状态是否合法
dp[l][i] =sigama(dp[l-1][j]);
其中i为当前行状态,j为前一行状态.
比较重要的两个位运算
i|j 获取前行与些行的并,看是否满足使前一行填满。
i&j 获取当前行的横放情况,可进一步判断是否合法。
#include<stdio.h>#include<string.h>#define M 16#define N 4056__int64 dp[M][N];short h,w;short total;bool Fail(int x){while(x){if(x&1){if(x&2) x>>=2;else return true;}else x>>=1;}return false;}int main(){short l,i,j;while(scanf("%d%d",&h,&w),h|w){if((h*w)&1) {puts("0");continue;}if(h<w){h=h^w;w=h^w;h=h^w;}total=1<<w;memset(dp,0,sizeof(dp));dp[0][total-1]=1;for(l=1;l<=h;l++){for(i=0;i<total;i++){for(j=0;j<total;j++){if(!dp[l-1][j]) continue;if((i|j)!=total-1) continue;if(Fail(i&j)) continue;dp[l][i]+=dp[l-1][j];}}}printf("%I64d\n",dp[h][total-1]);}return 0;}
- Poj2411 状态压缩
- POJ2411 状态压缩DP
- poj2411 状态压缩dp
- POJ2411(状态压缩DP)
- POJ2411 状态压缩dp
- 状态压缩 【POJ2411】Mondriaan'sDream
- poj2411 状态压缩~方案数
- poj2411(状态压缩dp)
- POJ2411(状态压缩DP)
- poj2411 Mondriaan's Dream 状态压缩dp
- POJ2411:Mondriaan's Dream(状态压缩)
- poj2411 Mondriaan's Dream 状态压缩dp
- poj2411 Corn Fields(状态压缩)
- 【poj2411】Mondriaan's Dream 状态压缩dp
- 状态压缩dp poj2411 1*2砖块
- 状态压缩DP poj2411 矩形填充木块问题
- poj2411——Mondriaan's Dream(状态压缩DP)
- poj2411 2663 2420 dp+状态压缩(多米诺骨牌问题)
- 数据库优化隐藏
- SafeArray创建多维数组
- Android 下载 断点续传
- 常用的英语短语短句(持续更新中)
- ubuntu 10.10 恢复默认面板
- Poj2411 状态压缩
- 程序员技术练级攻略
- C++链接几个经常出错的问题
- QoE
- oracle分析表
- ubuntu 清理残余的配置文件
- 给文件只有everyone的所有权限,没任何权限
- sqlMap中resultMap result column配置多个参数的用法
- 信息发布系统 Jquery+MVC架构开发(2) 在EA下进行数据库设计