读书人

hdoj 1003不知道为什么一直WA,该怎么解

发布时间: 2012-02-14 19:19:19 作者: rapoo

hdoj 1003不知道为什么一直WA
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1003

求最大子序列和的问题:

C/C++ code
#include <stdio.h>   int main()  {      int ids,i,j,len;    int b[100002],max,s,e; //max最大和,s开始位置,e终止位置    int a[100002];         scanf("%d",&ids);    for(i=1;i<=ids;i++){                //输入数组        scanf("%d",&len);        for(j=0;j<len;j++){            scanf("%d",&a[j]);        }                                //DP方程 B[j] = max(B[j-1]+A[j], A[j])        b[0]=a[0];s=e=0;max=b[0];        for(j=1;j<len;j++){            if(b[j-1]+a[j]<a[j]){                b[j] = a[j];                s = j;            }            else {                b[j] = b[j-1]+a[j];            }            if(b[j]>max){                max = b[j];                e = j;            }        }        printf("Case %d:\n", i);        printf("%d %d %d", max<-1000?-1000:max,s+1,e+1);        if(i==ids) printf("\n");        else printf("\n\n");    }          return 0;  }  


我测试了很多用例都可以,题目上的几个要求也都测试过:
1. 返回第一个最大子序列
2. 值范围在-1000-1000,这个我测试过Ac的版本,大于1000可以通过。
3. 对于全负数就是找到最大的负数,也没问题

实在找不出为什么呢,纠结

[解决办法]
增加一个变量x可以AC:
C/C++ code
#include <stdio.h>   int main()  {      int ids,i,j,len;    int b[100002],max,s,e; //max最大和,s开始位置,e终止位置    int x;//加    int a[100002];         scanf("%d",&ids);    for(i=1;i<=ids;i++){                //输入数组        scanf("%d",&len);        for(j=0;j<len;j++){            scanf("%d",&a[j]);        }                                //DP方程 B[j] = max(B[j-1]+A[j], A[j])        b[0]=a[0];s=e=0;max=b[0];        x = 0;//加        for(j=1;j<len;j++){            if(b[j-1]+a[j]<a[j]){                b[j] = a[j];                x = j; //改 s = j;            }            else {                b[j] = b[j-1]+a[j];            }            if(b[j]>max){                max = b[j];                s = x;//加                e = j;            }        }        printf("Case %d:\n", i);        printf("%d %d %d", max<-1000?-1000:max,s+1,e+1);        if(i==ids) printf("\n");        else printf("\n\n");    }          return 0;  } 

读书人网 >软件架构设计

热点推荐