動態規劃 HDU 1003 Max Sum

2021-07-03 14:51:14 字數 482 閱讀 7203

思路的話,並沒有什麼特別的,這道題使用dp的做法就可以了。

#include#include#include#includeusing namespace std;

int dp[100005];

int l[100005]; //記錄第i個字段的起始點

const int inf=0x3f3f3f3f;

int main()

} //找出最大欄位和的下標

printf("case %d:\n",cont++);

printf("%d %d %d\n",maxn,l[ans]+1,ans+1);

if(t!=0) printf("\n");

} return 0;

}

其中dp 陣列記錄的是dp 的結果,dp[i] 記錄前i個數字中以第i個數字結尾的最大和子段,l是記錄第i個字段和的起點。

HDU 1003 Max Sum 動態規劃)

題意 給定乙個陣列,求最大和子串行的值以及子串行的起始點和結束點。思路 dp嘛 當sum值大於最大值時,就記下最大值以及這個值對應的左起和右終的下標。當sum 0時,證明加上當前數整個數值為負,這個負數一定不會是下乙個最大子串行的成員,所以起始點要從當前位置的下一位開始,sum也要從新開始,因為下乙...

HDU 1003 Max Sum 動態規劃

這次看了這題的動態規劃寫法,頓時覺得好理解多了。這裡要對dp i 的意義進行一下說明,dp i 表示從1 i包含第i個數的最大子串和,如果前i 1個數的包含i 1在內的最大和為正數的話,那麼包含第i個數的最大子串和就是dp i 1 seq i 否則dp i 就等於seq i 了。該題的動態遞迴寫法並...

動態規劃 HDU 1003最大子串行和

解題思路 主要思想是動態規劃的思想,maxsum中儲存了當前位置 j 之前的最大子串行和。我們考慮到 當某一子串行的和為負數時,在讀取新的數n j 時,它總會有一定的抵消作用使新的和比n j 小,即它不可能對最大子串行和做出更多的貢獻。故此時我們可以丟棄這一段子串行,轉而從它後面著手。當然了,如果這...