hdu1087(求乙個長上公升子串行,使其和最大)

2021-06-20 09:26:15 字數 594 閱讀 3259

此題比較適合dp入門的人做一下。

最近剛學記憶化搜尋,所以用記憶化搜尋寫了乙個,dp[ i ]表示從第i個元素出發得到最大的上公升子串行的和,狀態轉移方程dp[ i ]=max( d p [ i ] ,dp[ j ] ) + a[ i ](j>i&&a[i]**如下:

#include#include#include#include#include#include#include#include#include#include#include#define eps 1e-9

#define n 1005

#define p system("pause")

using namespace std;

int n;

int a[n],dp[n],vis[n];

int dfs(int pos)

printf("%d\n",maxx); //dp中的最大值就是最大上公升子串行的和

}

// p;

return 0;

}

HDU1087(最長上公升子串行DP)

解題思路 i j 時 dp i max dp j a i a i 記錄儲存最大的dp i 值即可。dp i 代表從1到 i 的最大上公升子串行的和,裡層迴圈為dp i 做更新,尋找1到 i 區間內的最大上公升子串行和,從而使得其具有區域性最優子結構。完整 include include includ...

HDU 1087 最長上公升子串行和

題意 給你一串行,找出乙個和最大的上公升子串行,輸出它的和。思路 動態規劃,建立dp陣列。因為這題要求是上公升子串行,我們需要知道當前子串行末尾的值,所以可使dp i 表示以i結尾的序列的最大和。這樣迴圈到a i 時,可通過找到dp陣列前i 1項的最大值dp j 並比較a j 當前序列最後一項 與當...

動態規劃 最大上公升子串行(hdu1087)

題目描述 求乙個序列中 不一定連續 可以跳躍 但是數值遞增的最大和子串行 解題思路 這道題和之前的子串行題不一樣,因為無法判斷當前節點的取捨情況,即1,2,10序列,這個10我未必會選,因為10後面可能是7,8,9 看起來總覺得和揹包問題有什麼聯絡,其實的確差不多。我們先假設 乙個點i,以及某個子最...