洛谷 P1115最大子段和 C語言

2021-10-03 02:26:20 字數 1041 閱讀 3047

附上**

#include

long

int a[

200002];

long

int dp[

200002];

//動歸陣列

intmax

(int x,

int y)

intmain()

dp[1]

= a[1]

;//當只有第乙個元素進行比較時,最大值為的乙個元素本身

for(

int i =

2;i <= n;i++

)printf

("%ld"

,maxi)

;return0;

}

刪除線格式

這道題是一道動態規劃題目,也可以使用貪心演算法來做,dp[i]的意思是到原陣列的第i個元素時,最大子段和的值,再計算dp[i]時,需要比較dp[i-1] 和a[i]的大小,如果前者較大,就說明加上a[i]後最大子段和變大了,是我們想要的,如果加上a[i]後反而變小了,那前i個數的最大子段和就是a[i]本身。

maxi用來儲存dp陣列中最大的數,就是最後的答案。

上面說了這道題還可以用貪心演算法解,

附上**

#include

long

int a[

200002];

long

int sum;

intmax

(int x,

int y)

intmain()

for(

int i =

2;i <= n;i++

)printf

("%d"

,maxi)

;return0;

}

刪除線格式

簡單說一下,maxi永遠儲存的都是數列前i項的最大子段和的值,不一定是從頭開始的,而是從前i項的任意位置開始,再任意位置結束,只是最大值。

這兩段**都是可以ac的。

刪除線格式

溜了溜了~~

洛谷P1115最大子段和

洛谷1115 最大子段和 題目描述 給出一段序列,選出其中連續且非空的一段使得這段和最大。輸入輸出格式 輸入格式 輸入檔案maxsum1.in的第一行是乙個正整數n,表示了序列的長度。第2行包含n個絕對值不大於10000的整數a i 描述了這段序列。輸出格式 輸入檔案maxsum1.out僅包括1個...

洛谷 P1115 最大子段和

給出一段序列,選出其中連續且非空的一段使得這段和最大。輸入格式 輸入檔案maxsum1.in的第一行是乙個正整數n,表示了序列的長度。第2行包含n個絕對值不大於10000的整數a i 描述了這段序列。輸出格式 輸入檔案maxsum1.out僅包括1個整數,為最大的子段和是多少。子段的最小長度為1。輸...

洛谷P1115 最大子段和

給出一段序列,選出其中連續且非空的一段使得這段和最大。輸入格式 輸入檔案maxsum1.in的第一行是乙個正整數n,表示了序列的長度。第2行包含n個絕對值不大於10000的整數a i 描述了這段序列。輸出格式 輸入檔案maxsum1.out僅包括1個整數,為最大的子段和是多少。子段的最小長度為1。輸...