杭电 1003

#include<stdio.h>#include<stdlib.h>#include<string.h>>intmain(){intp,q,r,l,j,k,max,i=... #include<stdio.h>
#include<stdlib.h>
#include<string.h>>
int main()
{ int p,q,r,l,j,k,max,i=1,*a,sum;
scanf("%d",&q);
while(q--)
{scanf("%d",&p);
a = (int *)calloc(p,sizeof(int));
for(j=1;j<=p;j++)
scanf("%d",&a[j]);
max=a[1];
r=1;l=1;
for(j=1;j<=p;j++)
{sum=0;
for(k=j;k<=p;k++)
{
sum+=a[k];
if(sum>max)
{
max=sum;
l=k;
r=j;
}
if(sum<0)
{
j=k;
break;
}
}
}
printf("Case %d:\n%d %d %d\n",i++,max,r,l);
if(q)
printf("\n");
else
i++;
}
return 0;
}
展开
 我来答
406209073
2010-06-10 · 超过34用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:104万
展开全部
其他都对的
只用把 a = (int *)calloc(p,sizeof(int));
里面的p改成p+1 即可
即a = (int *)calloc(p+1,sizeof(int));
因为你下标是从1开始的 自然是要到p这个下标 而申请p+1的空间最大小标就是p
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式