天天看點

劍指Offer-Java-矩形覆寫

題目

我們可以用*1的小矩形橫着或者豎着去覆寫更大的矩形。請問用n個*1的小矩形無重疊地覆寫一個*n的大矩形,總共有多少種方法?
           

代碼

可以将問題了解成

當1*2的格子的時候隻有一種可能

當2*2的格子時候有兩種可能

當3*2的時候取決于第一個怎麼放,當第一次擺放一塊 1*2 的小矩陣,則擺放方法總共為f(target - 1)當第一次擺放一塊2*1的小矩陣,則擺放方法總共為f(target-2)。

因為當擺放的為2*1的時候,當擺放為1*2的時候其下面的也就确定了

劍指Offer-Java-矩形覆寫

由此通過疊代就可以求出所有可能性

public class Solution {
    public int RectCover(int target) {
        int a = ;
        int b = ;
        int c=;
        if(target==){
            return ;
        }
        if(target==){
            return ;
        }
        for(int i=;i<=target;i++){
             c = a+b;
             a=b;
             b=c;
        }
        return c;
    }
}