Description
奶牛们开了一家新公司,农夫约翰想看看它们做得怎么样。这家公司已经运营了N (1 <= N <= 100000)天,每天i头奶牛记录的净利润是P_i
(-1000 < = Pi< = 1000)。
农民约翰想找出奶牛在任意连续时间段内的最大总利润。(连续时间段可以从1天到N天。)帮他写一个程序,计算出连续利润的最大总和。
Input
第1行:单个整数:N
第i+1行包含单个整数Pi
Output
一个整数,表示任何连续时间段的最大利润总和。
Sample Input 1
7 -3 4 9 -2 -5 8 -3
Sample Output 1
14
#include <bits/stdc++.h>
using namespace std;
const int N = 100000;
int p[N];
int dp_rec(int p[], int n){
int Pn[n];
Pn[0] = p[0];
int res = Pn[0];
for(int i=1; i<n; i++){
if(Pn[i-1] < 0)
Pn[i] = p[i];
else
Pn[i] = Pn[i-1] + p[i];
}
for(int i=1; i<n; i++){
if(res <= Pn[i])
res = Pn[i];
}
return res;
}
int main(){
int n,maxP;
cin >> n;
for(int i=0; i<n; i++)
cin >> p[i];
maxP = dp_rec(p, n);
cout << maxP;
return 0;
}