这一道题就是求升序中的和的最大序列,并且找出序列的头和尾。如果存在相等的和,就按最前面的算。
题目https://pta.patest.cn/pta/test/1342/exam/4/question/18204
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
using namespace std;
#define N 11000
#define Max 0x3f3f3f3f
int a[N];
int main()
{
int i, n, sum, b, first, last, result;
while(~scanf("%d",&n))
{
b=last=first=0;
scanf("%d",&a[0]);
sum=result=a[0];
for(i=1;i<n;i++)
{
scanf("%d",&a[i]);
if(sum>=0)
{
sum+=a[i];
}
else
{
sum=a[i];
b=i;
}
if(sum>result)
{
last=i;
first=b;
result=sum;
}
}
if(result<0)
{
result=0;
first=0;
last=n-1;
}
printf("%d %d %d\n",result, a[first], a[last]);
}
return 0;
}