Re: [闲聊] 每日leetcode

楼主: pandix (面包屌)   2025-05-06 00:59:31
※ 引述《yam276 (史莱哲林的优等生)》之铭言:
: 790. Domino and Tromino Tiling
: https://leetcode.com/problems/domino-and-tromino-tiling/
: 题意:
: 你有2x1跟L型的多米诺
: 能拼出几种2xn的矩阵
这题也写好多次了
在填第i行的时候可以参考i-1行的状态
有四种状态 a.上面一格 b.下面一格 c.两格都有 d.都是空的
第i行要 a 的话 i-1行可以是 b (插直的) 或 d (插L)
i-2行
|i-1行
||i行
|||
O OXX O OXX
OO -> OO O -> OX
第i行要 b 的话
OO OO O OX
O -> OXX O -> OXX
第i行要 c 的话
OO OOX O OXX OO OOX O OXX
O -> OXX OO -> OOX OO -> OOX O -> OYY
后面两种很容易重复计算 要小心
第i行要 d 的话
OO OO
OO -> OO
就是 i-1 的 c
O OX
O -> OX
不用加上这种状况的原因是他已经被包含在 i-1 的 c 里面了
最后考虑一下起始状态就好
填第一行的时候左边等于是墙壁 也就是两格都有的状态 塞不进L
class Solution:
def numTilings(self, n: int) -> int:
up, bot, both, empty = 0, 0, 1, 0
mod = 10**9+7
for i in range(n):
up, bot, both, empty = bot+empty, up+empty, empty+up+bot+both,
both
return both % mod
作者: uiojkl789 (雪!花!喵!喵!)   2025-05-06 01:02:00
你为什么这么帅又这么卷
作者: sixB (6B)   2025-05-06 01:02:00
这题这么经典ㄛ你的写法好厉害==我好崇拜你
作者: DJYOMIYAHINA (通通打死)   2025-05-06 07:04:00
别卷了

Links booklink

Contact Us: admin [ a t ] ucptt.com