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; }
相关文章推荐
- POJ 2479 Maximum sum DP
- [ACM] POJ 2479 Maximum sum (动态规划求不相交的两段子段和的最大值)
- poj2479
- POJ 2479 Maximum sum(动态规划、多段最大子序列求和)
- poj2479,poj 2593 动归
- 今日头条2018校园招聘第一题 ---POJ 2479
- 【动态规划(最大子序列和)】:poj2479,Maximum sum
- 【poj 2479】Maximum sum 题意&题解&代码(C++)
- POJ 2479 最大数字连续和 动态规划
- poj 2479 Maximum sum
- POJ 2479 Maximum sum【求两个不重叠的连续子串的最大和】
- Poj 2479 Maximum sum
- poj 2479 2593 最大字段和
- poj_2479_Maximum sum(最大两子段和)
- POJ_2479 最大连续子序列和
- POJ-2479
- POJ-2479-Maximum sum-双向dp-2次连续区间和
- POJ - 2479 《Maximum sum》 【线性DP】
- POJ 2479
- POJ 2479 Maximum sum