POJ 2593 Max Sequence

来源:互联网 发布:淘宝店怎么刷销量 编辑:程序博客网 时间:2024/05/23 20:55

和POJ 2479 一样,还是最大连续子和的问题,用dp可以加速(d[i]表示一i结尾的最大子和)。

#include <iostream>#include <limits>#include <cstdio>#include <cstdlib>using namespace std;const int size = 100000 + 10;int f[size];int L[size] , R[size];int LMax[size] , RMax[size];int main(){int n;while(scanf("%d" , &n) && n){L[0] = -1; LMax[0] = numeric_limits<int>::min();for(int i = 1 ; i <= n ; ++i){scanf("%d" , f + i);L[i] = L[i-1] < 0 ? f[i] : L[i-1] + f[i];LMax[i] = L[i] > LMax[i-1] ? L[i] : LMax[i-1];}R[n+1] = -1; RMax[n+1] = numeric_limits<int>::min();for(int i = n ; i >= 1 ; --i){R[i] = R[i+1] < 0 ? f[i] : R[i+1] + f[i];RMax[i] = R[i] > RMax[i+1] ? R[i] : RMax[i+1];}int m = numeric_limits<int>::min();for(int i = 1 ; i < n ; ++i){int  t = LMax[i] + RMax[i+1];if(t > m) m = t;}cout << m << endl;}return 0;}


0 0
原创粉丝点击