地址:http://acm.hdu.edu.cn/showproblem.php?pid=1231
题意:中文。最大连续子川和。经典dp(不知道算不算dp)。
代码:
# include <stdio.h>
int a[10010] ;
int n, s, e, max_sum ;
void find()
{
int i, ss = s, ee = e, sum = max_sum ;
for (i = 1 ; i < n ; i++)
{
if (sum < 0)
ss = ee = sum = a[i] ;
else
{
sum += a[i] ;
ee = a[i] ;
}
if (sum > max_sum)
max_sum = sum, s = ss, e = ee ;
}
}
int main ()
{
int i, flag ;
while (~scanf ("%d", &n), n)
{
flag = 1 ;
for (i = 0 ; i < n ; i++)
{
scanf ("%d", &a[i]) ;
if (a[i] >= 0) flag = 0 ;
}
if (flag) printf ("%d %d %d\n", 0, a[0], a[n-1]) ;
else
{
max_sum = s = e = a[0] ;
find() ;
printf ("%d %d %d\n", max_sum, s, e) ;
}
}
return 0 ;
}