此題比較適合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,以及某個子最...