最大子序列和。在数据结构课上有讲过。很有意思。
#include <stdio.h>
#define N 100000
int num[N];
int main(void)
{
int T,flag=0;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
for(int i=0;i<n;++i)
{
scanf("%d",&num[i]);
}
int Maxflag=0,Minflag=0,MaxNum=num[0],lastflag=0,TempNum=0;
for(int i=0;i<n;++i)
{
TempNum += num[i];
if(MaxNum < TempNum)
{
MaxNum = TempNum;
Maxflag = i;
Minflag = lastflag;
}
if(TempNum < 0)
{
TempNum = 0;
lastflag = i+1;
}
}
if(flag)
putchar('\n');
++flag;
printf("Case %d:\n%d %d %d\n",flag,MaxNum,Minflag+1,Maxflag+1);
}
return 0;
}