给定一个长度为n的一个序列A1,A2,…,An,求序列中连续子序列的最大和。
例如:当输入为-5,3,5,7,-15,6,9,27,-36,10时,连续子序列6,9,27的和为42是最大值;而当序列变成-5,3,5,8,-15,6,9,27,-36,10时,连续子序列3,5,8,-15,6,9,27的和为43是最大值。
输入描述 Input Description第一行为n (n≤1000),第二行为n个数,表示序列Ai(-10000≤Ai≤10000)。
输出描述 Output Description一个数,表示连续子序列的最大和。
样例输入 Sample Input10
-5 3 5 8 -15 6 9 27 -36 10
样例输出 Sample Output43
数据范围及提示 Data Size & Hint-10000≤Ai≤10000
n≤1000
#include <iostream> #include <cstdio> using namespace std; int main() { int Max=0,sum=0,s; int n; int i; scanf("%d", &n); for(i=0;i<n;i++) { scanf("%d", &s); sum+=s; if(Max<sum) { Max=sum; } if(sum<0) sum=0; } printf("%d\n",Max); }