核心考点:场景转化成模型,特殊情况分析,简单dp
我们可以用 2×12\times12×1 的小矩形横着或者竖着去覆盖更大的矩形。请问用n个 2×12\times12×1 的小矩形无重叠地覆盖一个 2×n2\times n2×n 的大矩形,从同一个方向看总共有多少种覆盖的方法?
例如,n=3时,2×32\times32×3 的矩形块有3种覆盖方法(从同一个方向看):

解析:
对于这道题,我们若是从无到有一个个的放小矩形的话,那么我们迟早会崩溃,因为当我们才放到4个小矩形的时候情况就已经很多了。

这时我们可以尝试从后往前进行分析,寻找规律。
我们将f(x)f(x)f(x)定义为用 2×12\times12×1 的小矩形无重叠地覆盖一个 2×x2\times x2×x 的大矩形的覆盖总方法数,那么就有如下结论:
| 表达式 | 含义 |
|---|---|
| f(n)f(n)f(n) | 用 2×12\times12×1 |

这篇博客讨论了如何使用动态规划策略来解决用2×12的小矩形无重叠覆盖2×n大矩形的问题。通过定义状态转移方程f(n)=f(n−1)+f(n−2),揭示了问题与斐波那契数列的关联,并给出了具体的代码实现。
最低0.47元/天 解锁文章
13万+





