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

劍指offer十之矩形覆蓋

rmi http 鏈接 isp image 覆蓋 ide tar 邊界

一、題目

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

二、解答思路

如果第一步選擇豎方向填充,則剩下的填充規模縮小為n-1;

技術分享

如果第一步選擇橫方向填充,則剩下的填充規模縮小為n-2,因為第一排確定後,第二排也就確定了。

技術分享

因此,遞歸式為:

tectCover(n)= tectCover(n-1)+ tectCover(n-2);

邊界條件為:

當n=0時, 總共有0種方法;

當n=1時, 總共有1種方法;

當n=2時, 總共有2種方法;

3、代碼

技術分享
public class Solution {
    public int RectCover(int target) {
          if(target==0){
            return 0;
        }else if(target==1){
            return 1;
        }else if(target==2){
            return 2;
        }else {
            return RectCover(target-2)+ RectCover(target-1); //遞歸調用
        }
    }
}
View Code

-------------------------------------------------------------------------------------------------------

參考鏈接:https://www.nowcoder.com/questionTerminal/72a5a919508a4251859fb2cfb987a0e6

劍指offer十之矩形覆蓋