HDU_1231 最大连续子序列

  活说这道题,“如果最大连续子序列不唯一,则输出序号i和j最小的那个(如输入样例的第2、3组)。”这句话!有病!!

      如果测试数据是

  3

       0 1 2

       结果应该是  3 0 2,可是OJ的数据是 3 1 2,如果不是看到Discuss里有人提醒,我一个月也找不出错误来!!

  不说了,气愤!!看代码:

#include <stdio.h>
#define N 10010
#define inf 0x7fffffff
int main()
{
int a[N];
int n, i, sum, f, max;
//freopen("data.in", "r", stdin);
while(scanf("%d", &n), n)
{
int x = 0;
for(i = 1; i <= n; i++)
{
scanf(
"%d", &a[i]);
if(a[i] < 0) x++;
}
if(x != n)
{
max
= -inf; sum = 0; f = 1;
int f1, f2;
for(i = 1; i <= n; i++)
{
sum
+= a[i];
if(sum > max)
{
max
= sum; f1 = f; f2 = i;
}
if(sum <= 0)
{
sum
= 0;
f
= i+1;
}
}
printf(
"%d %d %d\n", max, a[f1], a[f2]);
}
else
{
printf(
"0 %d %d\n", a[1], a[n]);
}
}
return 0;
}
原文地址:https://www.cnblogs.com/vongang/p/2127002.html