1. 程式人生 > >[劍指offer] 10. 旋轉陣列的最小數字

[劍指offer] 10. 旋轉陣列的最小數字

題目描述

我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法?
思路: 利用dp[i]儲存蓋2*i的矩形有多少種辦法。 通過擺前幾個推算出規律 1 時候就是 | 2 時候就是 | | 和 -- 擺n的時候就是兩種情況,一種是先擺1格,則有dp[n-1]種方法 另一種是先2格,則有dp[n-2]種方法。 於是推出dp[n]=d[n-1]+dp[n-2]
class Solution
{
public: int rectCover(int number) { int dp[9999] = {0}; dp[1] = 1; dp[2] = 2; for (int i = 3; i <= number; i++) { dp[i] = dp[i - 1] + dp[i - 2]; } return dp[number]; } };