pat A1007 動態規劃之最長子序列和問題

2021-10-03 12:20:47 字數 518 閱讀 3343

題目鏈結->link

給定乙個整數序列,其中有正有負,求其最長子序列的和,以及該子串行對應的首、尾元素,如果序列全為負數,那麼則輸出和為0,以及整個序列的首、尾元素。

#include "cstdio"

#include "iostream"

using namespace std;

int main(

)else

if(maxsum(maxsum<0)

maxsum=0;

printf(

"%d %d %d\n"

,maxsum,a[leftindex]

,a[rightindex]);

return0;

}

如果暴力法求所有子串行和再比較,需要o(n2)。

如果用分治法,遞迴思想,從中間分成兩個子串行,遞迴地求左子串行最大長度和右子串行最大長度,以及跨越中間線的最大子串行和,三者中最大的即所求,需要o(nlog2n)。

PAT A1007(動態規劃)

include include include include includeusing namespace std define maxn 100010 int dp maxn a maxn int s maxn int main if flag 1 dp 0 a 0 for int i 1 ia...

PAT A1007 最大連續子串行和

給定k個整數的序列,其任意連續子串行可表示為,其中 1 i j k。最大連續子串行是所有連續子序中元素和最大的乙個,例如給定序列,其最大連續子串行為,最大連續子串行和即為20。輸出最大和以及n i n j 如果有多種方案使得和最大,那麼輸出其中i,j 最小的一組 如果所有整數均為負數,則最大子串行和...

動態規劃之最長回文串

dp i j 表示 以s i 開始s j 結尾的回文串的長度。如果這個字串不是回文串,讓dp i j 0 顯然,j i,只需往dp填j i的部分即可。dp i j 的遞推公式可以這麼表述 1 首先對dp的對角線元素初始化為1,也就是當i j時,dp i j 1。這很顯然,每個單獨的字元其實就是個長度...