牛客
题目描述
我们可以用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] 还是斐波拉契数列。
代码略
本文探讨了使用2x1小矩形覆盖2xn大矩形的方法数量问题,通过动态规划的方法,将其转化为斐波拉契数列求解,提供了一种简洁高效的解决方案。
282

被折叠的 条评论
为什么被折叠?



