動態規劃 Problem C

2021-07-11 15:06:02 字數 616 閱讀 3798

1.簡單題意

這道題要求的是最長上公升子串行的和。

2.解題思路

用乙個sum陣列儲存子問題的解。(sum對應的下標 i 表示,從0到i,最長上公升子串行的和。)從頭開始,遍歷每乙個數,開始第一重迴圈。對每乙個數,又從頭遍歷到這個數的前乙個數,這是第二重迴圈,在第二重迴圈中,用下標j表示當前遍歷到的數,如果data[i]>data[j],則說明data[j]和data[i]能構成乙個上公升子串行,但此時還需繼續往後遍歷(因為要求最長),用tem儲存最大的sum[j](到第j個數時的解,最大的sum[j]才能保證最長子序列)。遍歷完後,將此時的sum[i]更新(sum[i]+=data[i]+tem),解決了當前的子問題。

3.ac**

#include#include #include using namespace std;

int a[1005], dp[1005];

const int inf = 999999999;

int main()

for (i = 1; i <= n; i++)

}dp[i] = ans + a[i];

} ans = -inf;

for (i = 0; i <= n; i++)

cout<

動態規劃 什麼是動態規劃?

先來看看 資訊學奧賽一本通第5版 是怎麼說的 動態規劃程式設計是對解最優化問題的一種途徑 一種方法,而不是一種特殊演算法。不像前面所述的那些搜尋或數值計算那樣,具有乙個標準的數學表示式和明確清晰的解題方法。動態規劃程式設計往往是針對一種最優化問題,由於各種問題的性質不同,確定最優解的條件也互不相同,...

mysql動態規劃 動態規劃

動態規劃 能夠動態規劃的問題具有以下特點 可分解成規模更小的子問題 子問題的結果可復用 關鍵是要理解狀態轉移方程的含義就好啦!數字三角形 問題描述 在數字三角形尋找從頂到底的路徑,使得路徑經過的數字之和最大。規定每一步只能往左下或右下走,求出最大路徑和。遞迴解法 include include us...

《動態規劃》 ACM 動態規劃例題詳解

描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 圖1 圖1給出了乙個數字三角形。從三角形的頂部到底部有很多條不同的路徑。對於每條路徑,把路徑上面的數加起來可以得到乙個和,你的任務就是找到最大的和。注意 路徑上的每一步只能從乙個數走到下一層上和它最近的左邊的那個數或者右邊的那個數。輸...