读书人

-新手

发布时间: 2012-05-13 16:39:43 作者: rapoo

求救--新手
杭电1003题。为什么我这个代码总是wrong answer啊?我觉得没有什么问题的呢!
地址是:http://acm.hdu.edu.cn/showproblem.php?pid=1003
谢谢各位大侠帮忙啦!

C/C++ code
#include <stdio.h>#define NUM 100001int main(){    int nArr,nSum[NUM];    int nCase;    int N,i,j=0;    int nStart ,nEnd,nMaxSum;    scanf("%d",&nCase);    while(j<nCase)    {        j++;        scanf("%d",&N);        scanf("%d",&nArr);        nSum[0] = nArr;        nStart = 1;        nEnd = 1;        nMaxSum = nSum[0];        for (i=1;i<N;i++)        {            scanf("%d",&nArr);            if (nSum[i-1]>=0)            {                nSum[i] =nSum[i-1]+nArr;            }             else            {                nSum[i] = nArr;            }            if (nSum[i]>=nMaxSum)            {                nMaxSum = nSum[i];                nEnd = i+1;            }        }        if (nMaxSum>=0)        {            int nTmp = nMaxSum;            for (i=nEnd-1;i>=0;i--)            {                if (nSum[i]<0)                {                    break;                }            }            if (i>=0)            {                nStart = i+2;            }             else            {                nStart = 1;            }        }         else        {            nStart = nEnd;        }        printf("Case %d:\n",j);        printf("%d %d %d\n",nMaxSum,nStart,nEnd);        if(j!=nCase)            printf("\n");    }    return 0;}


[解决办法]
对的嘛。是不是你输出格式有什么问题??
C/C++ code
#include <stdio.h>#define NUM 100001int main(){    int nArr,nSum[NUM];    int nCase;    int N,i,j=0;    int nStart ,nEnd,nMaxSum;    scanf("%d",&nCase);    while(j<nCase)    {        j++;        scanf("%d",&N);        scanf("%d",&nArr);        nSum[0] = nArr;        nStart = 1;        nEnd = 1;        nMaxSum = nSum[0];        for (i=1;i<N;i++)        {            scanf("%d",&nArr);            if (nSum[i-1]>=0)            {                nSum[i] =nSum[i-1]+nArr;            }             else            {                nSum[i] = nArr;            }            if (nSum[i]>=nMaxSum)            {                nMaxSum = nSum[i];                nEnd = i+1;            }        }        if (nMaxSum>=0)        {            int nTmp = nMaxSum;            for (i=nEnd-1;i>=0;i--)            {                if (nSum[i]<0)                {                    break;                }            }            if (i>=0)            {                nStart = i+2;            }             else            {                nStart = 1;            }        }         else        {            nStart = nEnd;        }        printf("Case %d:\n",j);        printf("%d %d %d\n",nMaxSum,nStart,nEnd);        if(j!=nCase)            printf("\n");    }    return 0;} 

读书人网 >C语言

热点推荐