#include<iostream>
using namespace std;
int MaxSum(int n,int *a,int &besti,int &bestj){
int sum = 0,starthere,b = 0;
besti = bestj = 1;
//b存放临时的和besti和bestj分别保存最佳开始和结束位置,starthere临时存放起始位置
for(int i = 1;i <= n;i++){
if(b + a[i] >= 0)
b += a[i];
else
{
b = 0;
starthere = i+1;
}
if(sum < b)
{
sum = b;
besti = starthere;
bestj = i;
}
}
return sum;//最后的最大和
}
void main(){
int num,besti,bestj;
printf("输入数的个数:");
cin>>num;
int *a = (int *)malloc((num + 1) * sizeof(int));
printf("输入每个数:");
for(int i = 1;i <= num;i++)
cin>>a[i];
cout<<"最大和为: "<<MaxSum(num,a,besti,bestj);
cout<<"\n最佳开始位置是: "<<besti<<"最佳终止位置是: "<<bestj<<endl;
delete []a;
}