知识点:最大连续子序列和
哇哈哈,一不小心刷到前10名去了,偷笑ING……
#include <cstdio>
bool scan_d(int &n) //整数输入外挂,减少时间
{
char i;
bool I=0;
i=getchar();
if(i==EOF) return 0;
while(i!='-'&&(i<'0'||i>'9'))
i=getchar();
if(i=='-') I=1,n=0;
else n=i-'0';
while(i=getchar(),i>='0'&&i<='9')
n=n*10+i-'0';
if(I) n=-n;
return 1;
}
int main()
{
int t;
scan_d(t); //整数输入外挂函数的调用
for(int i=0;i<t;i++)
{
if(i) putchar('\n');
int n;
scan_d(n);
int tmp,maxSum=-1000,thisSum=0; //maxSum最小为-1000
int start=1,end=1,nowstart=1; //nowstart为start提供更新
for(int j=1;j<=n;j++)
{
scan_d(tmp);
thisSum+=tmp;
if(thisSum>maxSum)
{
maxSum=thisSum;
start=nowstart;
end=j;
}
if(thisSum<0)
{
thisSum=0;
nowstart=j+1;
}
}
printf("Case %d:\n",i+1);
printf("%d %d %d\n",maxSum,start,end);
}
return 0;
}
![](http://hi.csdn.net/attachment/201111/10/0_13208945966owX.gif)
![](http://hi.csdn.net/attachment/201111/10/0_13208946086yxO.gif)