问题:
用2×1的小矩形去填充2×n的矩形,问共有多少种填充的方法?
分析:
问题的本质是向2×n的矩形框种放小矩形。想让每次放入的都能够将框的长填充满,只有两种放入方式:
(1)仅放入一个。
(2)放入由两个凑成的2×2的小矩形。
所以我们仍然可以用二叉树求解。
既我们的初始节点为5(假设n=5),左右子节点则为4、3,后续子节点为3和2、2和1,依次类推。
综上所述,易知符合斐波拉契数列,即f(n)=f(n-1)+f(n-2)。
推广:
m×1的小矩阵填充2×n的矩阵,分析思路如上,只不过(2)中变为由m个凑成m×m的小矩形。
所以f(n)=f(n-1)+f(n-m)(n>m)。
代码使用简单的斐波拉契递归即可实现。