我的杭电acm 1003 好像是算法复杂了,运行时间长了点,求大神指导一下

#include<iostream>usingnamespacestd;intmain(){inti,j,k,n,m,a[100000],temp,max,start,e... #include<iostream>
using namespace std;
int main()
{
int i,j,k,n,m,a[100000],temp,max,start,end;
cin>>m;
for(k=1;k<m;k++)
{
max=start=end=0;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
for(i=1;i<=n;i++)
{
temp=0;
for(j=i;j<=n&&temp>=0;j++)
{
temp=temp+a[j];
if(temp>max)
{
max=temp;
start=i;
end=j;
}
}
}
cout<<"Case "<<k<<":"<<endl<<max<<" "<<start<<" "<<end<<endl<<endl;
}
max=start=end=0;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
for(i=1;i<=n;i++)
{
temp=0;
for(j=i;temp>=0&&j<=n;j++)
{
temp=temp+a[j];
if(temp>max)
{
max=temp;
start=i;
end=j;
}
}
}
cout<<"Case "<<m<<":"<<endl<<max<<" "<<start<<" "<<end<<endl;
getchar();
getchar();
getchar();
getchar();
return 0;
}
展开
 我来答
wfqlt163
推荐于2016-08-02
知道答主
回答量:40
采纳率:0%
帮助的人:22.3万
展开全部
#include <stdio.h>
void main()
{
int a[100001],b[100001];
int i,j,k,l,m,n,max,maxb,maxe;
scanf("%d",&m);
for (j=1;j<=m;j++)
{
scanf("%d",&n);
for (i=1;i<=n;i++) scanf("%d",&a[i]);
b[1]=a[1]; max=b[1]; l=1; maxb=maxe=1;
for (i=2;i<=n;i++)
{
if (b[i-1]>=0) b[i]=b[i-1]+a[i];
else
{
b[i]=a[i];
l=i;
}
if (b[i]>毁慧茄max)
{
max=b[i];
maxb=l;
maxe=i;
}
}
printf("纤察Case %d:\n",j);
printf("%d %d %d\碧迹n",max,maxb,maxe);
if (j!=m) printf("\n");
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式