杭电acm1003题,为什么总是WA?

2024-11-17 18:25:16
推荐回答(1个)
回答(1):

subs *seq(int *s, int n)
{
int i, nsum = 0, nleft = 1, nright = 1, nega = -1001, negat, neganum = 0;
subs *a;

a = (subs *)malloc(sizeof(subs));
a->Max = s[0];
a->left = a->right = 1;
for (i = 0; i < n; i++)
{
if (s[i] <= 0 && (s[i] > nega)){ nega = s[i]; negat = i + 1; neganum++; }
nsum += s[i];
if (nsum<0) { nright = nleft = i + 2; nsum = 0; }
// 这里要填   >=0
else if (nsum>=0 && nsum <= a->Max) nright++;
else { a->Max = nsum; a->left = nleft; a->right = nright; nright++; }
}
if (neganum == n){ a->Max = nega; a->right = a->left = negat; }

return (a);
}