您的位置:首页 > 其它

POJ 2479 Maximum sum DP

2012-11-15 13:48 274 查看
View Code

#include<stdio.h>
#include<string.h>
int a[50003];
int f[50003], g[50003];
#define inf 1000000000
int max(int a, int b) { return a > b ? a : b;}
int main()
{
int i, j, cas, n;
scanf("%d", &cas);
while(cas--)
{
scanf("%d", &n);
for(i = 1; i <= n; i++)
scanf("%d", &a[i]);
for(i = 0; i <= n; i++)
f[i] = g[i] = -inf;
int sum = 0;
for(i = 1; i <= n; i++)
{
sum += a[i];
f[i] = max(sum, f[i-1]);
if(sum < 0) sum = 0;
}
sum = 0;
for(i = n; i >= 1; i--)
{
sum += a[i];
g[i] = max(sum, g[i-1]);
if(sum < 0) sum = 0;
}
int ans = -inf;
for(i = 1; i < n; i++)
if(ans < f[i] + g[i+1]) ans = f[i] + g[i+1];
printf("%d\n", ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: