動態規劃 最大連續子串行和

2021-09-10 23:58:40 字數 726 閱讀 1348

題目大意就是讓你選出一段和最大的連續序列,當有幾個序列和並列時,選出下標最小的的連續序列。

可以採用動態規劃的思想解決,設一連續序列為a[0],a[1],...,a[n],分別以a[0],a[1],...,a[n]結尾的最大序列和為d[0],d[1],...,d[n]

若d[i-1]>0,則d[i]=d[i-1]+a[i],若d[i-1]<0,則d[i]=a[i],則d[i]為結尾的最大序列和為max(a[i],d[i-1]+a[i]),最大序列和為max(d[0],...,d[n])

設sum=0,sum+=a[i]

若sum<0,則最長子序列的下標從i+1開始,並且令sum=0,這一步相當於d[i]<0,則d[i+1]=a[i+1]

下面附上ac**

#includeusing namespace std;

int main()

if(sum<0)

}printf("case %d:\n%d %d %d\n",k,maxs,maxl,maxr);

if(k!=n) printf("\n");

}return 0;

}

動態規劃 最大連續子串行和

動態規劃 最大連續子串行和 問題描述 給定乙個數字序列a1,a2,an,求i,j 1 i j n 使得ai aj最大,輸出這個最大和。樣例 211 413 5 2顯然 11 4 13 20 為和最大的選取情況,因此最大和為20 下面介紹動態規劃的做法,複雜度為o n 讀者會發現其實左端點的列舉是沒有...

動態規劃 最大連續子串行和

給定乙個數字序列,a1,a2,an,求i,j 1 i j n 使得ai aj最大,輸出這個最大和。樣例輸入 2 11 4 13 5 2 輸出 20 即11 4 13 20 最大 分析 如果暴力做的話,乙個列舉,需要o n 2 在計算需要o n 一共需要o n 3 因為重複計算的太多了,還是設定乙個d...

動態規劃 最大連續子串行和

在刷力扣題的時候遇到了乙個連續子陣列最大和問題,下面是題目的鏈結和描述 輸入乙個整型陣列,陣列中的乙個或連續多個整數組成乙個子陣列。求所有子陣列的和的最大值。要求時間複雜度為o n 輸入 nums 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。時間...