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

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

類似於青蛙跳臺階,當n=1時,只有一種橫向排列的方式。當n等於二時,2*2有兩種選擇,橫向或者是豎向。當n等於3的時候對於2*3來說,如果選擇的是豎向排列,則剩下的就是2*2排列,如果選擇的是橫向,則對於2*n剩下的則只有1*n的一種選擇。所以依次類推,找到迭代RectCover(target-1)+RectCover(target-2)。

publicclass Solution { publicint RectCover(inttarget) { if(target <=0){ return0; } elseif(target ==1|| target == 2
){ returntarget; } return(RectCover(target-1)+RectCover(target-2)); } }