题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003
题目大致意思是对一组数求和,找出其中最大的值和这个最大和的起始位置和末位;
应用到动态数组的分配
刚开始没有想到动态数组,就定义了一个老长的数组啊,最后代码所占空间太大直接通不过。。。
后来优化了,还是无法通过,说是运行超时了,,,我也是醉了。。。实在找不出是哪里让他超时了、、、看来程序优化还是很重要啊!!!
好啦,直接上代码了
#include<stdio.h>
int main()
{
int n,m;
int i,j,l,r; //l为zuo位 r为右极限
int sum,max;
int *a;int x;
x=1;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
a=(int *)calloc(m,sizeof(int));
for(i=0;imax)
{
max=sum;
r=j; //endpoint
l=i;
}
}
}
printf("Case %d:\n%d %d %d\n\n",x,max,l+1,r+1);x++; }
return 0;
}