剑指offer刷题记录10——矩形覆盖

题目描述:

我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

长n无论为几,宽始终为2,所以从前往后每次覆盖,只有两种元方法,用一个小矩形覆盖一个宽为2长为1的矩形,或者用两个小矩形覆盖一个宽与长皆为2的矩形。那最后一步覆盖可以由前两种形式调用一个元方法覆盖过来,所以可以用斐波那契数列来解。

解法:

public class Solution {
    public int RectCover(int target) {
        if(target <= 2) {
            return target;
        }
        return RectCover(target - 1) + RectCover(target - 2);
    }
}

运行时间:324ms

占用内存:9304k

猜你喜欢

转载自blog.csdn.net/qq_37684824/article/details/82891920
今日推荐