要想找到符合条件的序列,我们应该有以下条件

 一个数重头开始遍历相加,如果这个数大于0的话,继续加后面的数,如果小于0的话,重后面的数开始重新遍历;

这个过程中保证了大数一定会出现,所以应该找出大数;

sum大于0的话,与后面的数相加有可能是最大数;

如果小于0,则,重新开始会比以前的数更大;

一下是我的代码

#include<stdio.h>
 #include<stdlib.h>
 #include<string.h>
 #include<math.h>
 #include<iostream>
 #include<algorithm>
 using namespace std;


 int T,n;
 int from;
 int bs,es;
 int i;
 int maxn,sum,k;
 int cnt=0;


 int main()
 {
     scanf("%d",&T);
     while(T--)
     {
         scanf("%d",&n);
         maxn=-99999999;
         sum=0;
         from=1;
         for(i=1;i<=n;i++)
         {
             scanf("%d",&k);
             sum+=k;
             if(sum>maxn)
             {
                 maxn=sum;
                 bs=from;
                 es=i;
             }
             if(sum<0)
             {
                 from=i+1;
                 sum=0;
             }
         }
         printf("Case %d:\n",++cnt);
         printf("%d %d %d\n",maxn,bs,es);
         if(T)
             printf("\n");
     }
     return 0;
 }