力扣 790. 多米诺和托米诺平铺
有兩種形狀的瓷磚:一種是?2 x 1?的多米諾形,另一種是形如?"L" 的托米諾形。兩種形狀都可以旋轉。
給定整數 n ,返回可以平鋪?2 x n?的面板的方法的數量。返回對?109?+ 7?取模?的值。
平鋪指的是每個正方形都必須有瓷磚覆蓋。兩個平鋪不同,當且僅當面板上有四個方向上的相鄰單元中的兩個,使得恰好有一個平鋪有一個瓷磚占據兩個正方形。
示例 1:
輸入: n = 3 輸出: 5 解釋: 五種不同的方法如上所示。示例 2:
輸入: n = 1 輸出: 1代碼
class Solution:
? ? def numTilings(self, n: int) -> int:
? ? ? ? MOD = 10 ** 9 + 7
? ? ? ? dp = [[0] * 4 for _ in range(n + 1)]
? ? ? ? dp[0][3] = 1
? ? ? ? for i in range(1, n + 1):
? ? ? ? ? ? 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]
?
?
?
總結
以上是生活随笔為你收集整理的力扣 790. 多米诺和托米诺平铺的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 未来战争中的ai机器人都长什么样?
- 下一篇: [小技能]