牛客
题目描述
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
思路
很容易想到:
21只有一种方法。
22有两种方法。
那 2 * 3, 2 * 4, 2 * n 呢?
2*3的摆放方法可以看成:
(2 * 2的摆放数,最后再摆一块) + (2 * 1的摆放数,最后再摆两块)
那么我们设
d
p
[
n
]
dp[n]
dp[n]表示摆满
2
∗
n
2*n
2∗n的大矩形有多少种方法
最后
d
p
[
n
]
=
d
p
[
n
−
1
]
+
d
p
[
n
−
2
]
dp[n] = dp[n-1]+dp[n-2]
dp[n]=dp[n−1]+dp[n−2] 还是斐波拉契数列。
代码略