劍指offer十之矩形覆蓋
阿新 • • 發佈:2017-10-01
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十之矩形覆蓋