1. 程式人生 > >總算是過了動態規劃這一關了

總算是過了動態規劃這一關了

自從開始學演算法,動態規劃就一直是我心中的一道陰影。也怪了,這個演算法的原理我看明白了,可總是寫不出程式來。具體地說,是0/1揹包問題

讓我感到頭痛。

這次又碰到了0/1揹包問題,想自己摸索出演算法來,結果想了兩天,也沒想出來(看來當時對原理理解的還是不深)。因為在我的思考過程中,上界總是作為一個具體的值出現的,腦子根本就沒往函式、區間的表示方式那個方向轉。如果這個上界是具體的數值,那麼每個子問題都是獨一無二的,就不存在最優子結構了,也就找不到使用動態規劃的方法。如果將上界設為一個未知數,用函式來表示,而函式的取值空間是一樣的,都是整個實數域。這樣,就很容易發現最有子結構了,並且問題的重疊部分也顯示出來了。“動一子而滿盤皆活”,變上界值為變數,在函式的級別上覆用,太妙了!