矩形覆蓋

問題:咱們能夠用2*1的小矩形橫着或者豎着去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法?java

 

當 n=1,只有一種方法,code

當 n = 2,只有兩種方法。blog

要覆蓋 2*n 的大矩形,能夠先覆蓋 2*1 的矩形,再覆蓋 2*(n-1) 的矩形;或者先覆蓋 2*2 的矩形,再覆蓋 2*(n-2) 的矩形。而覆蓋 2*(n-1) 和 2*(n-2) 的矩形能夠當作子問題。該問題的遞推公式以下:get

图片说明

 

public class Solution {
    public int RectCover(int target) {
        if (target < 1) {
            return 0;
        } else if (target == 1 || target == 2) {
            return target;
        } else {
            return RectCover(target-1) + RectCover(target-2);
        }
    }
}
相關文章
相關標籤/搜索