題目描述
【問題】
給定n個整數(可能為負數)組成的序列a[1],a[2],a[3],…,a[n],
求該序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。
當所給的整均為負數時定義子段和為0,
依此定義,所求的最優值為: max,1<=i<=j<=n
例如,當(a1,a2,a3,a4,a4,a6)=(-2,11,-4,13,-5,-2)時,最大子段和為20。
【輸入】
第一行 n
第二行n個數為系列數值
【輸出】
最大子段和、
【樣例輸入】
54 -5 3 2 4
【樣例輸出】
9【樣例輸入】
71 2 3 -5 0 7 8
【樣例輸出】
16code:
#include
using
namespace std;
int n,a,dp,ans=
-99999999
;//ans可能是負數,所以要注意一下
intmain()
cout
}
最開始的時候在oj上提交,ans初始化為0,可能是因為oj上資料太少了就碰巧通過了吧,後來在其他平台提交就發現了問題,最大欄位和可能是負數,所以在定義ans時要給它初始化成為乙個很大很大的負數。 最大連續子段和問題(動態規劃 貪心)
最大連續子段和問題 傳送門問題描述 給定乙個陣列,記錄一串數字,且元素值即存在正數也存在負數,現在要你求出陣列中最大的連續子段和 分析 動態規劃解法 這是乙個經典的線性dp的模型。狀態表示 f i 表示以a i 為結尾的最大子串行的和的值 狀態計算 對於當前位置 i 有兩種情況 class solu...
最大連續子段和
最大連續子段和 給定長度為n的整數序列,a 1.n 求 1,n 某個子區間 i,j 使得a i a j 和最大,或者求出最大的這個和。例如 2,11,4,13,5,2 的最大子段和為20,所求子區間為 2,4 窮舉法 3次for迴圈 第1次for迴圈,遍歷陣列所有數字,即確定子段和的首個數字 第2次...
動態規劃 最大連續子串行和
題目大意就是讓你選出一段和最大的連續序列,當有幾個序列和並列時,選出下標最小的的連續序列。可以採用動態規劃的思想解決,設一連續序列為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 ...