上公升序列(b1,b2,…,bn),當b1第一行,輸入數的個數,以下一行輸入各個數。
最長子序列長度。
vc6.0或其他c語言程式設計軟體
動態規劃思路:
(1)將問題分成n個子問題(長度為n的序列)。
(2)以每個n為終點,判斷子問題上公升序列的長度。
(3)最後取最長上公升子串行長度,得到整個問題的解。
具體方法(關鍵部分):
(1)陣列從下標1開始儲存。
(2)第乙個上公升子串行長度為1。 以後每乙個考察兩點:
上公升子串行中,保證終點向左的每個數都小於終點n
在1.的前提下(b[a]>b[j]),記錄子串行最大長度
(3)tmp在第二重迴圈前初置為0。記錄最長長度。
(4)最後輸出
學習ACM之動態規劃
分類 acm演算法 2011 06 16 22 15 145人閱讀收藏 舉報themes 優化遊戲 通過上一章的學習,相信大家對動態規劃已經有了乙個初步的了解,如果您將上一章的推薦習題全部掌握,那麼您可以開始這一章的學習內容了。這一章,我們將講解一些動態規劃的設計技巧。相信大家在做動態規劃一類題目的...
動態規劃學習
首先是01揹包問題,可以把它看做是乙個 行和列分別是體積從1,2,v,每個物品的花費c1,c2,cn,每個空格裡的數代表放入第i個物品在體積為j的揹包裡的最大價值。dp j 表示體積為j的揹包,放入物品後,可以得到的最大值。狀態轉移方程為if j c i dp j max dp j dp j c i...
動態規劃學習
把位置 i,j 看成乙個狀態,然後定義狀態 i,j 的指標函式d i,j 從位置 i,j 出發時能得到的最大和。int i,j 邊界值處理 for j 1 j n j result n j data n j 由下向上動態規劃,儲存葉子節點到當前節點的最大值 for i n 1 i 1 i for j...