题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。 请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 思路target=1,f(1)=1; target=2,f(2)=2; target=3,f(3)=f(1)+f(2); .... target=n-1,当剩最后一块:f(n-1)=f(n-2); 当剩最后两块:f(n-1)=2f(n-3); target=n,当剩最后一块:f(n)=f(n-1)(竖); 当剩最后两块:f(n)=f(n-2)(横)+f(n-2)(竖);有一种情况包含了f(n-1)(竖), 那么两个公式可以合并为f(n)=f(n-2)+f(n-1); Java 1.812345678910111213141516171819public class Solution { public int RectCover(int target) { int a = 1; int b = 2; int c = 0; if(target==1){ return 1; }else if(target==2){ return 2; }else { for (int i = 3; i <= target; i++) { c = a + b; a = b; b = c; } } return c; }} 文章作者: snmlm文章链接: https://snmlm.github.io/algorithm/offer/Offer_10/版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 snmlm!算法剑指offer上一篇09 变态跳台阶下一篇11 二进制中1的个数 相关推荐 2020-03-13剑指offer 汇总 2020-03-1301 二维数组中的查找 2020-03-1302 替换空格 2020-03-1303 从尾到头打印链表 2020-03-1305 重建二叉树 2020-03-1305 用两个栈实现队列