1. 程式人生 > >[劍指offer]矩形覆蓋

[劍指offer]矩形覆蓋

在這裡插入圖片描述
思路:
用歸納法
n=1時,return 1
在這裡插入圖片描述
n=2時,return 2
在這裡插入圖片描述
n=2以上時,分兩步考慮
第一次擺放一塊21,佔了一格,所以有f(n-1)種擺法
在這裡插入圖片描述
第一次擺放一塊1
2,佔了兩格,因為上方擺放了一個12,下方就確定只能放12了,所以有f(n-2)種擺法
在這裡插入圖片描述
可得f(n)=f(n-1)+f(n-2),是一個斐波那契數列
實現:
和斐波那契數列一模一樣,只需要改一下起始數值,本題n=1時f(n)=1

public class Solution {
    public int RectCover(int target) {
        if(target<=2)return target;
int n1=1; int n2=2; int total=0; for(int i=2;i<target;i++){ total=n1+n2; n1=n2; n2=total; } return total; } }