1. 程式人生 > >劍指offer-矩形覆蓋

劍指offer-矩形覆蓋

新的 ber 產生 png nbsp 它的 log com ++

看到第n個矩形相對與第n-1個是多了一行1*2的小矩形,這個新的小矩形能如何貢獻價值?

第一種情況,它直接被一個1*2的小矩形覆蓋,剩余部分如何填充就是沒有加新的小矩形之前的也就是和第n-1個矩形產生的結果相同

第二種情況,它的每個1*1的小矩形分別放一個1*2矩形的一半,這樣就要浪費原來的一行矩形,也就是剩下n-2行,那n-2行產生的價值是已知的

那麽 dp[n] = dp[n-1] + dp[n-2]; dp[0] = 0; dp[1] = 1; dp[2] = 2;

看圖片一眼就知道了 n=4時

技術分享

技術分享
class Solution {
public:
    int rectCover(int
number) { if(number == 0) return 0; if(number == 1) return 1; if(number == 2) return 2; int a = 1, b = 2; for(int i = 3; i <= number; ++i){ int tmp = b; b += a; a = tmp; } return b; } };
View Code

劍指offer-矩形覆蓋