很好的矩阵覆盖问题
參考這篇文章:
http://www.cnblogs.com/CheeseZH/p/5112946.html
?
題目描述
我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請(qǐng)問用n個(gè)2*1的小矩形無重疊地覆蓋一個(gè)2*n的大矩形,總共有多少種方法? class Solution { public:int rectCover(int n) {if (n == 1 || n == 2) return n;int a = 1, b = 1;while (n-- >= 2) {a = a + b;b = a - b;}return a;} };開始看,很難懂是吧,我也看了好一會(huì)兒。
把 b = a - b 用上一個(gè)式子a = a + b代入,得到,其實(shí) b = a + b - b = a,其實(shí)就是b存儲(chǔ)了上一個(gè)a。
這樣就能夠看出來,a和b分別存儲(chǔ)了上一個(gè)結(jié)果和上上一個(gè)結(jié)果。再結(jié)合DP的思想,
最終的結(jié)果,其實(shí)就是豎過來放一個(gè)的結(jié)果(對(duì)應(yīng)上一個(gè)結(jié)果)+橫過來放兩個(gè)的結(jié)果(對(duì)應(yīng)上上一個(gè)結(jié)果)。
很巧妙是吧。
?
轉(zhuǎn)載于:https://www.cnblogs.com/charlesblc/p/6338132.html
總結(jié)
- 上一篇: Angularjs实现下拉框自动匹配键值
- 下一篇: react-router使用教程