杭电1003求解题思路!!

2024年11月23日 11:38
有2个网友回答
网友(1):

//#include "StdAfx.h"
#include
using namespace std;
int main()
{
int zu;
cin>>zu;
for(int j=1;j<=zu;j++)
{
if(j!=1)
cout< int nums,c,sum=0,start=0,end=nums-1,temp=0,max=-99999999;
cin>>nums;
for(int i=0;i {
cin>>c;
sum+=c;
if(sum>=max)
{
start=temp;
end=i;
max=sum;
}
if(sum<0)
{
sum=0;
if(c>=0)
temp=i;
else
temp=i+1;
}
}
cout<<"Case "< cout< }
}
可以一边输入,一边判断处理。temp表示起点位置,start表示sum最大时的开始位置,end表示sum最大时的结束为止。end可以跟随i前进故不用在定义一个临时变量。当sum>=max时 ,更新数据 当sum<0 是更新开始位置。

网友(2):

声明个数组int a[20][10000] 不过感觉这样子 是不是时间要求会不过~