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

劍指offer 10矩形覆蓋

solution 矩形覆蓋 總結 建議 tar targe code ber ati

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

java版本:

public class Solution {

    public  static void main(String[] args){
        long startTime=System.currentTimeMillis();
        System.out.println("第23項的結果是:"+RectCover(23));
        long endTime=System.currentTimeMillis();
        System.out.println(
"程序執行的時間:"+(endTime-startTime)+"ms"); } /*遞歸*/ /*public static int RectCover(int target){ if(target<3){ return target; }else{ return RectCover(target-1)+RectCover(target-2); } }*/ /*非遞歸*/ public static int RectCover(int target){
if(target<2){ return target; }else{ int a=1; int b=2; int c=0; for(int i=3;i<=target;i++){ c=a+b; a=b; b=c; } return c; } } }

js版本:

function rectCover(number)
{
    if(number<3){
        return number;
    }else{
        var a=1,b=2,c=0;
        for(var i=3;i<=number;i++){
            c=a+b;
            a=b;
            b=c;
        }
        return c;
    }
}

總結這道題用的也是斐波那契數列,思想和前幾道題一致,不明白的同學可以翻翻我之前做過的題。故在此就不做詳述,還是建議大家不用遞歸,時間復雜度較高。

劍指offer 10矩形覆蓋