天天看點

10. 矩形覆寫(劍指offer)

關注公衆号(落葉歸根的豬),擷取一手資源~

10. 矩形覆寫

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

1. 思路:

        以2x8的矩形為例。示意圖如下:        

10. 矩形覆寫(劍指offer)

        我們先把2x8的覆寫方法記為f(8)。用第一個1x2小矩陣覆寫大矩形的最左邊時有兩個選擇,豎着放或者橫着放。當豎着放的時候,右邊還剩下2x7的區域,這種情況下的覆寫方法記為f(7)。接下來考慮橫着放的情況。當1x2的小矩形橫着放在左上角的時候,左下角和橫着放一個1x2的小矩形,而在右邊還剩下2x6的區域,這種情況下的覆寫方法記為f(6)。是以f(8)=f(7)+f(6)。此時我們可以看出,這仍然是斐波那契數列。

2. 代碼+答案:

10. 矩形覆寫(劍指offer)
10. 矩形覆寫(劍指offer)