演算法 動態規劃 走台階問題

2021-09-25 15:40:03 字數 855 閱讀 6217

有一道經典題目:有一座高度是10級台階的樓梯,從下往上走,每跨一步只能向上1級或者2級台階,要求程式求出一共多少中走法.

第一種方法:暴力的利用排列組合,寫乙個多層巢狀迴圈遍歷出所有的可能性,但是時間複雜度是指數級的.

這裡就用到了動態規劃,當然也有遞迴的思想,我們假設你只差一步就到第10級台階,會出現什麼情況?

只會出現兩種情況,一種是從9級走到10級,一種是8級走到10級

利用遞迴的思想,10級台階的走法f(10) = f(9) + f(8),f(9) = f(8)+f(7),f(8)= f(7)+f(6)....

我們把乙個複雜的問題分階段進行簡化,逐步簡化成簡單的問題,這就是動態規劃.當然我一直也認為有遞迴的思想在裡面.

動態規劃包含三個重要的概念:最優子結構,邊界,狀態轉移公式

f(10) = f(9) + f(8)是最優子結構

f(1) =1;  邊界

f(2)=2; 邊界

f(n) = f(n-1)+f(n-2) (n>=3) 狀態轉移公式

分別用了三種方法:

擴充套件題目二:國王和金礦

乙個國家發現5座金礦,參與挖礦工人是10人,每座金礦要麼全挖,要麼不挖,不能派出一半人挖取一半金礦.要想得到盡可能多的**,應該選擇挖取哪幾座金礦?

參考:

動態規劃 走台階(入門1)

題目 有n級台階,乙個人每次上一級或者兩級,問有多少種走完n級台階的方法?分析 由分析可知 n階台階,只可能是從n 1或是n 2的台階上走上來的,台階n的階段依賴的是n 1和n 2的子階段,所以狀態轉移方程為dp n dp n 1 dp n 2 屬於最簡單的動態規劃問題 include define...

走台階問題

舉個例子,假設有3個台階,則有三種走法 分別是,1 1 1,1 2,2 1。很簡單的一道題,學過組合數學的人很快就能想到,這是乙個遞推關係。假設走完k個台階有f k 種走法。於是有如下公式 上面只給出了有多少種走法,那麼具體每一種走法是怎麼走的呢?比如n 4時,五種走法分別如下 1,1,1,1 1,...

走台階問題

舉個例子,假設有3個台階,則有三種走法 分別是,1 1 1,1 2,2 1。很簡單的一道題,學過組合數學的人很快就能想到,這是乙個遞推關係。假設走完k個台階有f k 種走法。於是有如下公式 遞迴演算法int count unsigned intn 非遞迴演算法int count unsigned i...