题目链接:http://poj.org/problem?id=2479
题目分类:动态规划
代码:
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int a[50000+100]; int s[50000+100]; int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int t,n,sum,tmp,ans; scanf("%d",&t); while(t--) { scanf("%d",&n); sum=0; tmp=-0x3f3f3f3f; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); sum+=a[i]; if(sum>tmp) tmp=sum; s[i]=tmp; if(sum<0) sum=0; } sum=0; tmp=-0x3f3f3f3f; ans=-0x3f3f3f3f; for(int i=n;i>1;i--) { sum+=a[i]; if(sum>tmp) tmp=sum; if(ans<s[i-1]+tmp) ans=s[i-1]+tmp; if(sum<0) sum=0; } printf("%d ",ans); } return 0; }