看999,999比-1大,但dp[7]>dp[5]+1的,即999要和前面的1234組成最長序列,不能和-1組成最長,所以不僅要前面挑後面(a[j]dp[i]),999是合格的"後面",但-1-2是不合格的"前面"
staticvoid
solve()
}dpv[i].push_back(a[i]);
}int k = 1
;
for (int i = 2; i <= n; ++i)
}printf(
"%d\n
", dp[k]);//
這是子串的長度
for(auto x : dpv[k])
printf(
"%d
", x);
return
;}
in:8123 -939
011out:61
2339
11
動態規劃合集
最長有效括號 給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。示例 1 輸入 輸出 2 解釋 最長有效括號子串為 示例 2 輸入 輸出 4 解釋 最長有效括號子串為 dp表示0 i的有效括號子串的長度。遇到 直接跳過,因為之前沒有與之匹配的括號。遇到 我們則開始進行討論,j i 1 ...
動態規劃 常見揹包問題合集
01揹包 有n件物品和乙個容量為v的揹包。每件物品只有一件 第i件物品的費用是c i 價值是v i 求解將哪些物品裝入揹包使總價值最大。轉移方程 f i v max,可以優化只用一維陣列.如下 for int i 0 i w i j if record j c i v i record j reco...
動態規劃 什麼是動態規劃?
先來看看 資訊學奧賽一本通第5版 是怎麼說的 動態規劃程式設計是對解最優化問題的一種途徑 一種方法,而不是一種特殊演算法。不像前面所述的那些搜尋或數值計算那樣,具有乙個標準的數學表示式和明確清晰的解題方法。動態規劃程式設計往往是針對一種最優化問題,由於各種問題的性質不同,確定最優解的條件也互不相同,...