HDU-1003-Max Sum
题目大意就不讲了,看测试数据就可以看出来,
这里主要是超时问题,对于超时问题我们可以减少循环,减枝,.......这里利用的是减少循环,
我开始直接两个循环,超时。
不用说两个循环只能说明你没思考,对于这题只要一个循环就可以了。
直接看代码。
AC代码
#include<stdio.h>
int a[100005];
int main(void)
{
    int t,n,i,j,k,k1,k2;
    int s,max;
    scanf("%d",&t);
    int h=1;
    while(t--)
    {
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        {
            scanf("%d",a+i);
        }
        k=1;
        max=-999999999;
        s=0;
        for(i=1;i<=n;i++)
        {
            s=s+a[i];
            if(s>max)
            {
                max=s;
                k1=k;
                k2=i;
            }
            if(s<0)
            {
                k=i+1;
                s=0;
            }
        }
        printf("Case %d:\n",h++);
        printf("%d %d %d\n",max,k1,k2);
        if(t)
        printf("\n");
    }
    return 0;
}
超时代吗
#include<stdio.h>
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号