小熊筆記 動態規劃相關

2021-07-04 14:32:36 字數 634 閱讀 6392

昨天看了一道longest palindrome substring的題,書中提到了動態規劃(dynamic programming, dp)。 想起之前旁聽課就一知半解,以前刷題也沒有好好刷,於是決定好好學習一下。目前學習的粗淺心得是,dp跟遞迴有乙個共同的技巧就是,不要想太多。都是focus在當前狀態,頂多往前往後推一層。

先看了知乎兩個帖子:

第乙個帖子說的很簡潔,適合入門,其中有一段摘錄在這裡,總結了幾種跟狀態相關的演算法的區別:

每個階段只有乙個狀態->遞推;

每個階段的最優狀態都是由上乙個階段的最優狀態得到的->貪心;

每個階段的最優狀態是由之前所有階段的狀態的組合得到的->搜尋;

每個階段的最優狀態可以從之前某個階段的某個或某些狀態直接得到而不管之前這個狀態是如何得到的->動態規劃。

之後看了這個帖子  是翻譯了topcoder上面的一篇關於dp入門到高階的文章( ),例子解釋的很清楚,比較容易上手。所舉例子分別為硬幣湊n元(初級),n*m格仔從左上到右下一次拿最多蘋果(中級),無向圖n個節點自帶權重拿m元找最優路徑(中高階),和繼續拿蘋果不過左上右下,之後右下左上,之後再左上右下,一共三次,也是醉了~

今天開始看看coursera上面演算法課關於dp的內容。

to be continued...

動態規劃筆記

動態規劃,維基上面的解釋是 動態規劃 英語 dynamic programming,dp 1 是一種在數學 電腦科學和經濟學中使用的,通過把原問題分解為相對簡單的子問題的方式求解複雜問題的方法。動態規劃常常適用於有重疊子問題 2 和最優子結構性質的問題,動態規劃方法所耗時間往往遠少於樸素解法。動態規...

Fibonacci數列(動態規劃相關)

問題描述 fibonacci數列的遞推公式為 fn fn 1 fn 2,其中f1 f2 1。當n比較大時,fn也非常大,現在我們想知道,fn除以10007的餘數是多少。輸入格式 輸入包含乙個整數n。輸出格式 輸出一行,包含乙個整數,表示fn除以10007的餘數。樣例輸入 10樣例輸出 55樣例輸入 ...

ACM 動態規劃筆記

2.解決動態規劃問題,要先找出動態轉移方程來,動態轉移方程怎麼找呢?首先得定好,用哪幾個因子,可以明確的表示好乙個狀態,然後,再通過樣例或者特例或者硬想,找出子問題和父問題的關係,或者說,子問題怎麼push,可以影響到父問題?我感覺可以放開思路想,放心大膽的想,假設你不會動態規劃,讓你暴力搜尋,你會...