POJ 1088

5 5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
典型的動態規劃算法,滿足(1)(2)兩條件:
(1)重複子問題:如24->17,需要求17的最長路徑,而18->17,也需要求17的最長路徑,這就存在一個重複的子問題。
(2)最優子結構:從24出發的最長路徑,包括了23出發的最長路徑。。。,即包含了最優的子結構。

設計方法:
至底向上:依次求出各個節點的最大路徑,最後求出這些最大路徑的最大值。

另外,採用記憶化搜索:如果已求得節點的最長路徑,保存其值,下次需要求得該節點的最長路徑值時,直接返回,避免了重複再去求而導致時間效率過低。

代碼如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章