【问题描述】 给定由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;//假设最大值为0 int temp=0; for(int i=0;i<n;i++){ if(temp>0){ temp+=a[i];//最大值临时变量只有大于零,才可能越加越大 }else{ temp=a[i];最大值临时变量只有小于零,直接等于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; }