最大字段和问题
【问题描述】
若给定n个整数组成的序列a1,a2,a3,……an,求该序列形如ai+ai+1+……+an的最大值。
注意:当所有整数均为负整数时定义此时最大子段和为0.
【输入形式】
第一行输入所输入数的个数,第二行输入各个数
【输出形式】
该数组的最大子段和
【样例输入】
7
-1 -3 -4 5 7 -8 -9
【样例输出】
12
c++代码
#include <iostream>
using namespace std;
int max_sum(int n,int a[]){
int b=0,max;
max=0;
for (int i=0;i<n;i++)
{
if (b>0) b+=a[i];
else b=a[i];
if(b>max) max=b;
}
return max;
}
int main() {
int n;
int a[100];
cin>>n;
for (int i=0; i<n; i++){
cin>>a[i];
}
cout<<max_sum(n,a)<<endl;
}