文章
33
粉丝
0
获赞
156
访问
7.8k
kande算法,遍历一次数组。
当前最大值 = max(arr[i], arr[i] + 当前最大值)
全局最大值 = max(当前最大值, 全局最大值)
#include <bits/stdc++.h>
using namespace std;
long long MaxVal(long long x,long long y){
return x>y?x:y;
}
int main() {//注意不用long long最后一个样例过不去
int n;
while(cin>>n){
vector<long long> vec;
for(int i=0;i<n;i++){
long long temp;
cin>>temp;
vec.push_back(temp);
}
long long max_t = vec[0],max_all=vec[0];
for(int i=1 ;i<vec.size();i++){//更新当前最大值,全局最大值.
max_t = MaxVal(vec[i],max_t+vec[i]);
max_all = MaxVal(max_t,max_all);
}
cout<<max_all<<endl;
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发