Python程序:计算用2x1多米诺骨牌填充3 x n方格的方法数量


假设我们有一个数字n,我们必须找到用1 x 2多米诺骨牌填充(3 x n)块的方法数量。如果需要,我们可以旋转多米诺骨牌。如果答案非常大,则返回模10^9 + 7的结果。

因此,如果输入为n = 4,则输出为11。

为了解决这个问题,我们将遵循以下步骤:

  • m = 10^9 + 7
  • 如果n是奇数,则
    • 返回0
  • cs := 1, os := 0
  • 对于范围从2到n,步长为2的i,执行:
    • cs := 3 * cs + os
    • os := 2 * cs + os
  • 返回cs mod m

示例 (Python)

让我们看看下面的实现,以便更好地理解:

 在线演示

class Solution:
   def solve(self, n):
      m = (10 ** 9 + 7)
      if n % 2 == 1:
         return 0
      cs = 1
      os = 0
      for i in range(2, n + 1, 2):
         cs, os = (3 * cs + os, 2 * cs + os,)
      return cs % m
ob = Solution()
n = 4
print(ob.solve(n))

输入

4

输出

11

更新于:2020年12月12日

197 次查看

开启你的职业生涯

完成课程获得认证

开始学习
广告