/* 题目内容:
给定长度为n的整数序列,a[1...n], 求[1,n]某个子区间[i , j]使得a[i]+…+a[j]和最大.或者求出最大的这个和.例如(-2,11,-4,13,-5,2)的最大子段和为20,所求子区间为[2,4].
输入描述
第一行为一个整数n,表示数组有n个数据,第二行依次输入n个整数
输出描述
计算出n个整数中连续k个数的最大和
输入样例
5
1 2 3 4 5
7
6 -5 5 8 -13 5 7
输出样例
15
14
*/
#include <iostream>
using namespace std;
int a[10000];
int f[10000];
int main(){
int n;
cin >> n;
for(int i = 0; i < n; i++)
cin >> a[i];
f[0] = a[0];
int max = a[0];
for(int i = 1; i < n; i++){
if(f[i - 1] > 0)
f[i] = f[i - 1] + a[i];
else
f[i] = a[i];
if(max < f[i])
max = f[i];
}
cout << max ;
return 0;
}
时间: 2024-10-26 18:35:30