#include <iostream>
using namespace std;
int main()
{
//以终为始,需要输出哪些数据?
//结构及记录:样例数test,记录数组num[100001]
//输出数值:和最大的连续子数组起点low、终点high、数值和max;
//动态辅助数值:当前子数组的起点ori、动态和sum;
int num[100001],max,sum;
unsigned short test,count,low,high,ori;//需要动态起点ori;
//test=count=sum=0;sum与max会因为每次输入不同而不同,应该在每次测试开始时初始化;
//max=-1001;
test=count=0;
cin>>test;//样例数目
while(++count<=test)
{
sum=0;
max=-1001;
low=high=ori=1;//此前初始化为0,发现首个ori不好操作
cin>>num[0];//数组元素的个数
for(int i=1;i<=num[0];++i)
{//此前忘记加花括号
cin>>num[i];
sum+=num[i];
if(sum>max)
{
low=ori;
high=i;
max=sum;
}
if(sum<0)
{
ori=i+1;
sum=0;
}
} //加花括号后忘记整体修改,最终输出结果应该在for外(for是单次输入循环)
cout<<"Case "<<count<<":\n"<<max<<"\t"<<low<<"\t"<<high<<endl;
if(count<test)cout<<endl;//如果不是最后的样例,需要添加空行跟上一个样例分开
}
return 0;
}
杭电 1003 最大连续子数组之和
于 2019-10-14 10:49:04 首次发布