[dp]洛谷P1990 覆盖墙壁 / Leecode790. 多米诺和托米诺平铺
创始人
2024-04-07 14:01:42
0

洛谷题目链接
Leecode题目链接

这两道题本质上是同一道题.在洛谷挺早就见过这道题了,但由于过于抽象没看懂就没做,直到今天在Leecode每日一题又见到了这道题.

看到大概就能猜出来用dp来做,因为满足了使用dp的无后效性(后面作出的操作不影响已经做完操作的结果)和子问题重叠(每铺一块砖都可以看作是一个子问题).而题目要求给出所有方案,不分优劣只数数量.最大的问题还是状态转移方程怎么写.

按力扣官方题解的思路来说一下这道题.按列从1到n枚举每一列,确保这一列之前没有未上色的方块,这一列之后没有已上色的方块.

此时我们枚举的这一列有四种可能的情况:

  1. 两个方块都未被上色
  2. 上方的方块被上色,下方的方块未被上色
  3. 下方的方块被上色,上方的方块未被上色
  4. 两个方块均被上色

四种情况的示意图如下,右边一列为枚举下标所在列
在这里插入图片描述
将这四种状态命名为0,1,2,3,用dp[i][x]dp[i][x]dp[i][x]表示第i列出现x情况的方法数量,可知在枚举结束后第n列第三种状态的方法数即dp[n][3]dp[n][3]dp[n][3]为答案.

接下来讨论在这四种状态如何由前方的状态转移过来.

对于d[i][0]d[i][0]d[i][0]状态,它和dp[i−1][3]dp[i-1][3]dp[i−1][3]状态是完全相同的,所以直接赋值.
在这里插入图片描述

对于d[i][1]d[i][1]d[i][1]状态,可以由dp[i−1][0]dp[i-1][0]dp[i−1][0]接上一个L形方块转移,也可以由dp[i−1][2]dp[i-1][2]dp[i−1][2]接上一个长条形方块转移.
在这里插入图片描述
对于d[i][2]d[i][2]d[i][2]状态,相当于d[i][1]d[i][1]d[i][1]状态的镜像,可以由dp[i−1][0]dp[i-1][0]dp[i−1][0]接上一个L形方块转移,也可以由dp[i−1][1]dp[i-1][1]dp[i−1][1]接上一个长条形方块转移.
在这里插入图片描述
而对于d[i][3]d[i][3]d[i][3]状态,可以由d[i−1][0]d[i-1][0]d[i−1][0]加两个横向长条方块转移,也可以由d[i−1][1]d[i-1][1]d[i−1][1]和d[i−1][2]d[i-1][2]d[i−1][2]加上一个L形方块转移,还可以由d[i−1][3]d[i-1][3]d[i−1][3]加上一个纵向长条方块转移.
在这里插入图片描述
将dp[0][0],dp[0][1],dp[0][2]dp[0][0],dp[0][1],dp[0][2]dp[0][0],dp[0][1],dp[0][2]赋初值0,dp[0][3]dp[0][3]dp[0][3]赋初值1,即可进行状态转移.

过程中需要注意数据量过大导致的溢出问题.Leecode要求对1e9+7取模,这就导致3状态的状态转移过程中就可能发生数据溢出,所以要对每一次两两相加的运算进行取余,防止溢出.

class Solution {public int numTilings(int n) {int[][] dp = new int[n + 1][4];final int mod = (int) 1e9 + 7;/*一个正方形都没有被覆盖,记为状态 0;只有上方的正方形被覆盖,记为状态 1;只有下方的正方形被覆盖,记为状态 2;上下两个正方形都被覆盖,记为状态 3。*/dp[0][3] = 1;for (int i = 1; i <= n; i++) {dp[i][0] = dp[i - 1][3];dp[i][1] = (dp[i - 1][0] + dp[i - 1][2]) % mod;dp[i][2] = (dp[i - 1][0] + dp[i - 1][1]) % mod;dp[i][3] = (((dp[i - 1][0] + dp[i - 1][1]) % mod + dp[i - 1][2]) % mod + dp[i - 1][3]) % mod;}return dp[n][3];}
}

上一篇:经历总结1

下一篇:皇帝制度的特点

相关内容

热门资讯

《北京市房屋建筑使用安全条例》... 《北京市房屋建筑使用安全条例》(以下简称《条例》)已由北京市第十六届人民代表大会常务委员会第二十次会...
股市必读:ST葫芦娃因涉嫌违反... 截至2025年12月29日收盘,ST葫芦娃(605199)报收于8.41元,下跌4.97%,换手率0...
公告精选 | 赣锋锂业涉嫌内幕... 风险提示 天箭科技(002977.SZ):公司相关军品2025年度进行了价格审核,与客户签订了《军品...
如何避免夫妻共同债务纠纷 有纠... 夫妻共同债务纠纷是婚姻破裂时的高发矛盾,会涉及日常借贷、经营投资等多重场景。那如何避免夫妻共同债务纠...
旋极信息:将持续关注海南自贸区... 有投资者在互动平台向旋极信息提问:“请问在海自贸区有那些业务布局?” 针对上述提问,旋极信息回应称:...
财经不烧脑 | 信用修复政策来... 你是不是也有这样的烦恼?就一次忘了还钱,金额可能也不大,结果征信报告上“挂”了整整五年!房贷、车贷、...
涉绑架杀害中国公民 犯罪嫌疑人... 中国青年报客户端北京12月29日电(中青报·中青网记者 何春中)记者今天从公安部获悉,公安部近日派出...
恒誉环保(688309)披露关... 截至2025年12月29日收盘,恒誉环保(688309)报收于23.88元,较前一交易日上涨2.58...
一场精准的“政策捕捉” 传鼎晖... 观点网 上海苏州河畔,一幢服务式公寓悄然易主,掀开了住房租赁行业生存逻辑变革的一角。 最新消息显示,...
从制度协同到产业共振 中越合作... [ 完善“边境口岸+产业园区”联动模式,将云南221.4亿元对越贸易额的增长势能延伸至内陆,形成“边...