劍指offer 10矩形覆蓋
阿新 • • 發佈:2018-08-11
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矩形覆蓋