题目描述:
有两种形状的瓷砖:一种是 2x1 的多米诺形,另一种是形如 “L” 的托米诺形。两种形状都可以旋转。
XX <- 多米诺
XX <- “L” 托米诺
X给定 N 的值,有多少种方法可以平铺 2 x N 的面板?返回值 mod 10^9 + 7。
(平铺指的是每个正方形都必须有瓷砖覆盖。两个平铺不同,当且仅当面板上有四个方向上的相邻单元中的两个,使得恰好有一个平铺有一个瓷砖占据两个正方形。)
示例:
输入: 3
输出: 5
解释: 下面列出了五种不同的方法,不同字母代表不同瓷砖:
XYZ XXZ XYY XXY XYY
XYZ YYZ XZZ XYY XXY
提示:
- N的范围是 [1, 1000]
思路:
主要思想就是推出公式,公式中会有两大重点:
1.2N个方格中平铺的方案数
2.2N+1个方格中平铺的方案数
首先定义
a[n] = 2N 方案数
b[n] = 2N+1 方案数
不难看出
a={0,1,2,5}
b={0,1,2,4}
那么假设现有2n的方格
1.去掉1层; 即a[n-1]
2