题解 | #连续最大和#
连续最大和
http://www.nowcoder.com/practice/5a304c109a544aef9b583dce23f5f5db
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
long getMax(long a,long b){
return a > b ? a : b;
}
int main(){
// 连续子数组的最大和! 典型dp !
int n;
cin>>n;
vector<int> arr(n);
for(int i = 0; i < n; i++) cin>>arr[i];
long max_sum = arr[0] /*最大值*/,sum = arr[0];/*零时最大值*/
for(int i = 1; i < n; i++){
sum = getMax(sum + arr[i],arr[i]);
if(sum > max_sum){
max_sum = sum;
}
}
cout<<max_sum<<endl;
return 0;
}