劍指offer-矩形覆蓋
阿新 • • 發佈:2017-10-13
新的 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(intView Codenumber) { 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; } };
劍指offer-矩形覆蓋