HDU 1143 Tri Tiling (状压DP)
来源:互联网 发布:php时间戳循环输出 编辑:程序博客网 时间:2024/04/30 10:29
题目链接:HDU 1143 Tri Tiling
题意:3*N的矩形,用2*1的小矩形铺满有多少种情况。
思路:每个小矩形可以横着放或是竖着放,发现3数据比较小可能状压做,小矩形竖着放为1,横着放为0(所以0是成对出现的),注意我们摆放的规则是摆到那一行应该把那一行铺满。
AC代码:
#include <stdio.h>#include <string.h>#include <vector>using namespace std;int dp[35][(1<<3)+10];int ok(int now,int pre) {if(pre == 1 && (now == 0 || now == 6))return true;if(pre == 4 && (now == 0 || now == 3))return true;if(pre == 7 && now == 0)return true;if(pre == 3 && now == 4)return true;if(pre == 6 && now == 1)return true;if(pre == 0 && (now == 1 || now == 4 || now == 7))return true;return false;}int main(){int n,i,j,k;while(scanf("%d",&n)!=EOF) {if(n==-1) break;if(n==0){printf("1\n");continue;}memset(dp,0,sizeof dp);for(i=0;i<n;i++) {if(i==0) {dp[i][1]=1,dp[i][4]=1,dp[i][7]=1;}else {for(j=0;j<(1<<3);j++) {if(!dp[i-1][j]) continue;for(k=0;k<(1<<3);k++) {if(ok(k,j)) dp[i][k]+=dp[i-1][j];}}}}printf("%d\n",dp[n-1][0]);}return 0;}
0 0
- HDU 1143 Tri Tiling (状压DP)
- 【DP】HDU 1143 Tri Tiling
- hdu 1143 Tri Tiling (DP)
- hdu 1143 Tri Tiling
- hdu 1143 Tri Tiling
- hdu 1143 Tri Tiling
- hdu-1143-Tri Tiling
- hdu 1143 Tri Tiling
- HDU 1143 Tri Tiling
- HDU 1143 Tri Tiling
- HDU 1143 Tri Tiling
- HDU 1143 Tri Tiling
- HDU 1143 Tri Tiling
- POJ 2663 && HDU 1143 Tri Tiling(dp)
- HDU 1143Tri Tiling&&POJ2663
- poj 2663 Tri Tiling 状压dp
- poj 2663 Tri Tiling--状压dp
- 1121. Tri Tiling (dp)
- java多线程机制三--线程的常用方法
- 1.0C语言数据与数据类型
- Android的自定义Menu使用PopupWindow实现
- Java中foreach用法
- ThinkPHP学习笔记(6)添加扩展功能类并import导入
- HDU 1143 Tri Tiling (状压DP)
- (1.1.8)循环算法的特征以及典型循环算法杨辉三角、螺旋队列等
- 从可复用、可维护、可扩展角度浅析《简单工厂模式》
- c语言实现的http请求
- xCAT 通过 IPMI 远程部署安装操作系统
- CCC 2015 总结&回顾
- python 在windows下的配置
- Spinner下拉列表
- .编写一个函数,将一个数字字符串转换成该字符串对应的数字