最大字段和问题

【问题描述】

若给定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;
}

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务