- 【问题描述】
给定由n个整数组成的序列a1,a2,…,a(n),求该序列字段和的最大值。 - 分析
当所有整数均为负值时定义其最大字段和为0。 - 定义:
即0或者,序列i到序列j之和两者之间最大的值。 - 例如:序列(-2,11,-4,13,-5,-2),求最大字段和为:
max=11+(-4)+13=20
#include<iostream>
const int MAX_LEN =100;
using namespace std;
int getMaxSum(int* a,int n){
int max=0;
int temp=0;
for(int i=0;i<n;i++){
if(temp>0){
temp+=a[i];
}else{
temp=a[i];
}
if(max<temp){
max=temp;
}
}
return max;
}
int main(){
int a[MAX_LEN];
int maxSum;
int n;
cout<<"请输入序列的元素个数"<<endl;
cin>>n;
cout<<"请依次输入序列的元素"<<endl;
for(int i=0;i<n;i++){
cin>>a[i];
}
maxSum=getMaxSum(a,n);
cout<<maxSum<<endl;
}