分析:和2479一样,只是数据规模不同了。 Code #include <iostream>using namespace std;int a[100001],l[100001],r[100002];int main(){ int n,sum,max; while(1) { scanf("%d",&n); if(n==0) break; l[0] = -10001; sum = 0; for(int i=1;i<=n;++i) { scanf("%d",&a[i]); if(l[i-1] > a[i]+sum) l[i]=l[i-1]; else l[i]=a[i]+sum; sum+=a[i]; if(sum<0) sum=0; } r[n+1] = -10001; sum = 0; max = -200000; for(int i=n;i!=0;--i) { if(r[i+1] > a[i]+sum) r[i]=r[i+1]; else r[i]=a[i]+sum; sum+=a[i]; if(sum<0) sum=0; if(l[i]+r[i+1]>max) max = l[i]+r[i+1]; } printf("%d\n",max); } return 0;} 转载于:https://www.cnblogs.com/jaskist/archive/2009/05/24/1488501.html