LeetCode每日一题11.12多米诺和托米诺平铺

'''
有两种形状的瓷砖:一种是 2 x 1 的多米诺形,另一种是形如 "L" 的托米诺形。两种形状都可以旋转。
给定整数 n ,返回可以平铺 2 x n 的面板的方法的数量。返回对 109 + 7 取模 的值。
平铺指的是每个正方形都必须有瓷砖覆盖。两个平铺不同,当且仅当面板上有四个方向上的相邻单元中的两个,使得恰好有一个平铺有一个瓷砖占据两个正方形。
'''


class Solution:
    def numTilings(self, N: int) -> int:
        a=[0, 1, 2, 5]
        b=[0, 1, 2, 4]
        c = 10**9+7
        if N<4:
            return a[N]
        for i in range(4, N+1):
            a.append((a[i-1]+2*b[i-2]+a[i-2])%c)
            b.append((a[i-1]+b[i-1])%c)
        return a[N]

你可能感兴趣的:(leetcode,算法,职场和发展)