順序表應用8 最大子段和之動態規劃法

2021-10-05 04:12:36 字數 1129 閱讀 7458

problem description

給定n(1<=n<=100000)個整數(可能為負數)組成的序列a[1],a[2],a[3],…,a[n],求該序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。當所給的整數均為負數時定義子段和為0,依此定義,所求的最優值為: max,1<=i<=j<=n。 例如,當(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)時,最大子段和為20。

注意:本題目要求用動態規劃法求解,只需要輸出最大子段和的值。

input

第一行輸入整數n(1<=n<=100000),表示整數序列中的資料元素個數;

第二行依次輸入n個整數,對應順序表中存放的每個資料元素值。

output

輸出所求的最大子段和

sample input

6-2 11 -4 13 -5 -2

sample output

20我的天哪,我在剛剛的問題中居然沒想到這種解法。

也就是說當加上這個數和大於零時,就直接加上,如果加上後和小於0,那就把和變為0;

這樣好像就有一種多多少少都積累上,積累不上就變為0及時止損的感覺…hhh;

#include

using

namespace std;

intmain()

else

sum=0;

}printf

("%d\n"

,ans)

;return0;

}

下面我在說一下我之前抄來的**…hhh

不過好好的**幹嘛要寫這麼複雜呢

#include

using

namespace std;

#define n 100010

struct node

intget_sum()

else

sum=0;

}return ans;}}

;int

main()

3665 順序表應用8 最大子段和之動態規劃法

time limit 5ms memory limit 500kb problem description 給定n 1 n 100000 個整數 可能為負數 組成的序列a 1 a 2 a 3 a n 求該序列如a i a i 1 a j 的子段和的最大值。當所給的整數均為負數時定義子段和為0,依此定...

3665順序表應用8 最大子段和之動態規劃法

time limit 5 ms memory limit 500 kib submit statistic problem description 給定n 1 n 100000 個整數 可能為負數 組成的序列a 1 a 2 a 3 a n 求該序列如a i a i 1 a j 的子段和的最大值。當所...

sdut 順序表應用8 最大子段和之動態規劃法

順序表應用8 最大子段和之動態規劃法 time limit 5 ms memory limit 500 kib problem description 給定n 1 n 100000 個整數 可能為負數 組成的序列a 1 a 2 a 3 a n 求該序列如a i a i 1 a j 的子段和的最大值。...