剑指Offer(牛客网) 矩形覆盖

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指Offer(牛客网) 矩形覆盖相关的知识,希望对你有一定的参考价值。


来源:https://www.nowcoder.com/practice/72a5a919508a4251859fb2cfb987a0e6?tpId=13&tqId=11163&tPage=1&rp=1&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking
题目描述
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

比如n=3时,2*3的矩形块有3种覆盖方法:
1.迭代

public class Solution 

public class Solution
public int RectCover(int target)
if (target <= 2)
return target;

int pre1 = 2; // n 最后使用一块,剩下 n-1 块的写法
int pre2 = 1; // n 最后使用两块,剩下 n-2 块的写法
for (int i = 3; i <= target; i++)
int cur = pre1 + pre2;
pre2 = pre1;
pre1 = cur;

return pre1; //相对于 n+1 块来说,第 n 种的方法


2.递归

public class Solution 
public int RectCover(int target)
if(target<3)
return target;


return RectCover(target-1)+RectCover(target-2);


以上是关于剑指Offer(牛客网) 矩形覆盖的主要内容,如果未能解决你的问题,请参考以下文章

牛客网剑指offer专题python解答JZ1---JZ12持续刷题中

牛客网剑指offer专题python解答JZ1---JZ12持续刷题中

剑指Offer(牛客网) 跳台阶

剑指Offer(牛客网) 反转链表

剑指offer_by牛客网

牛客网剑指Offer习题集题解0