和poj2479一样的题目,分析见poj2479解题报告,直接贴代码: 1696K+204MS
#include <stdio.h>
#include <stdlib.h>
#define Max 100010
#define Maxx(a,b) (a)>(b)?(a):(b)
#define Inf 1000000010
int record[Max];
int dpl[Max];
int dpr[Max];
int dprr[Max];
int Case,n;
int main(){
//scanf("%d",&Case);
//while(Case--){
while(scanf("%d",&n),n){
//scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&record[i]);
dpl[0]=0;
for(int i=1;i<=n;i++)
dpl[i]=Maxx(record[i]+dpl[i-1],record[i]);
dpr[n+1]=0;
for(int i=n;i>=1;i--)
dpr[i]=Maxx(record[i]+dpr[i+1],record[i]);
dprr[n]=record[n];
for(int i=n-1;i>=1;i--)
dprr[i]=Maxx(dpr[i],dprr[i+1]);
int result=-Inf;
for(int i=1;i<=n-1;i++){
int temp=dpl[i]+dprr[i+1];
if(result<temp)
result=temp;
}
printf("%d\n",result);
}
return 0;
}