題目
我們可以用2×1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2×1的小矩形無重疊地覆蓋一個2×n的大矩形,總共有多少種方法?
程序核心思想
2*(n-1)的方塊用小方塊覆蓋只有一種方法(豎著),2×(n-2)的方塊用小方塊覆蓋只有一種方法(橫著)
或者
- 第一次把小方塊豎著放,剩下的排布方式為 f(target - 1)
- 第一次把小方塊橫著放,剩下的排布方式為 f(target - 2)
代碼
01 | public class Solution { |
02 | public int RectCover( int target) { |
03 | if (target <= 0 ){ |
04 | return 0 ; |
05 | } |
06 | if (target == 1 ){ |
07 | return 1 ; |
08 | } else if (target == 2 ){ |
09 | return 2 ; |
10 | } else { |
11 | return RectCover(target - 1 ) + RectCover(target - 2 ); |
12 | } |
13 | } |
14 | } |
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。