题目大意:用 2*1 或者2*2-1的格子覆盖M*N的矩阵,有多少种覆盖方式。

分析:容易知道有以下6种放置方式。

然后用深搜的方法直接搞出来就行了,不过要使用两个变量来判断本位是否受影响。如果本行的放置可以影响上一行,比如(1,3,4,5,6)那么所影响的位置为0,如果没有受到影响那么就是1。

代码如下:

=====================================================================================================================

#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std; const int MAXN = ;
const int Bit = ; long long dp[MAXN][<<Bit];
int M, N; void DFS(int row, int col, int now, int pre, bool uNow, bool uPre)
{///row表示所在行,col表示列,now表示本行的状态,pre表示上一行的状态
///uNow uPre表示本列和上一列是否收到影响,1表示受影响,0表示没有
if(col == N)
{
if(!uNow && !uPre)
dp[row][now] += dp[row-][pre];
return ;
} if(!uNow)
{
if(!uPre)
{
DFS(row, col+, now<<|, pre<<, , );
DFS(row, col+, now<<|, pre<<, , );
DFS(row, col+, now<<|, pre<<, , );
}
DFS(row, col+, now<<|, pre<<|(!uPre), , );
DFS(row, col+, now<<|, pre<<|(!uPre), , );
}
if(!uPre)
DFS(row, col+, now<<|uNow, pre<<, , );
DFS(row, col+, now<<|uNow, pre<<|(!uPre), , );
} int main()
{
scanf("%d%d", &M, &N); dp[][(<<N)-] = ;
for(int i=; i<=M; i++)
DFS(i, , , , , ); printf("%lld\n", dp[M][(<<N)-]); return ;
}

Hardwood floor - SGU 131(状态压缩)的更多相关文章

  1. SGU 131. Hardwood floor 状压dp 难度:2

    131. Hardwood floor time limit per test: 0.25 sec. memory limit per test: 4096 KB The banquet hall o ...

  2. SGU131 - Hardwood floor(状态压缩DP)

    题目大意 给定一个N*M大小的矩形,要求你用1*2和2*2(缺个角)的砖块把矩形铺满(不能重叠),问总共有多少种铺法? 题解 受POJ2411的影响,怎么都没想到3,4,5,6这几种情况该怎么放置,看 ...

  3. SGU 131.Hardwood floor

    时间限制:0.25s 空间限制:4M 题意: 给出 n*m (1≤n.m≤9)的方格棋盘,用 1*2 的矩形的骨牌和 L 形的(2*2 的 去掉一个角)骨牌不重叠地覆盖,求覆盖满的方案数. Solut ...

  4. SGU 132 Another Chocolate Maniac 状态压缩DP

    感觉不是很好写的一道状态压缩. dp[i][j][k]表示第 i 行状态为k,第i - 1行状态为 j,具体细节见代码. 内存卡的很死,要用滚动数组. 还有一个比较坑爹的地方是它在输入蛋糕的时候中间可 ...

  5. HOJ 2226&POJ2688 Cleaning Robot(BFS+TSP(状态压缩DP))

    Cleaning Robot Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4264 Accepted: 1713 Descri ...

  6. BZOJ 3813--奇数国(线段树&欧拉函数&乘法逆元&状态压缩)

    3813: 奇数国 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 755  Solved: 432[Submit][Status][Discuss] ...

  7. POJ 3254. Corn Fields 状态压缩DP (入门级)

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9806   Accepted: 5185 Descr ...

  8. HDU 3605:Escape(最大流+状态压缩)

    http://acm.hdu.edu.cn/showproblem.php?pid=3605 题意:有n个人要去到m个星球上,这n个人每个人对m个星球有一个选择,即愿不愿意去,"Y" ...

  9. [HDU 4336] Card Collector (状态压缩概率dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4336 题目大意:有n种卡片,需要吃零食收集,打开零食,出现第i种卡片的概率是p[i],也有可能不出现卡 ...

随机推荐

  1. Objective-C中的@dynamic(转)

    转自 http://blog.csdn.net/haishu_zheng/article/details/12873151 Objective-C中的@dynamic 一.@dynamic与@synt ...

  2. iOS设备、Icon、LaunchImage、图片分辨率

    iOS设备 iOS设备的屏幕的大小.分辨率以及比例因数(Scale Factor)[1]. iPhone 设备 宽(inch) 高(inch) 对角线(inch) 逻辑分辨率(point) Scale ...

  3. MFC中cannot find the definition (implementation) of this function 解决方法

    问题:使用vc6 在点击左侧class view中的一个方法实现时出现下面错误:    cannot find the definition (implementation) of this func ...

  4. php 常用几个函数

    function foo($arg){    $arg_num = func_num_args(); // 获取函数参数的个数    $args = func_get_args();    // 获取 ...

  5. php模拟POST请求提交数据

    php模拟POST请求提交数据 1.基于fsockopen function phppost00($jsonString){ $URL='https://www.jy.com/phppostok.ph ...

  6. JS+CSS实现选项卡功能

    [小小一记] 首先我们写一个选项卡的结构出来,包括tab和content: 首先是tab: <ul class="ttitle-box-tabs" id="tabs ...

  7. ZeroBraneStudio之支持远程调试

    打开ZBS后,如果需要远程调试得先开启调试服务器:Project->Start Debugger Server 打开之后就可以编辑文件进行测试了.示例代码如下: local ZBS = 'D:/ ...

  8. windows相关小知识

    获得本机MAC1 快捷键win+R打开运行窗口, 输入cmd回车进入控制台2 输入ipconfig -all  找到本地连接中的物理地址 根据IP获得MAC方法:1 进入cmd控制台,执行:ping ...

  9. Nodejs 集成到IIS

    http://www.hanselman.com/blog/WebMatrixAndNodejsTheEasiestWayToGetStartedWithNodeOnWindows.aspx http ...

  10. node c#

    blogs.msdn.com/b/brunoterkaly/archive/2012/02/22/node-js-socket-programming-with-c-and-javascript.as ...