#include <iostream>
#include <vector>
using namespace std;
//一个是当前最大值CurrentMax,还有一个就是当前的数组和sum
//期初的思路是,当前值<sum时,更新当前值
//后来发现忽略了一个问题,就是,sum得更新情况
//所以在sum+=array[i]之后,要比较,sum和当前数组值的大小
//若当前和小于当前的array[i],则更新,sum=array[i]
//接下来继续判断,当CurrentMax<sum,则更新CurrentMax=sum;
int FindGreatestSumOfSubArray(vector<int> array) {
int length = array.size();
if(length <=0)
return 0;
int CurrentMax = array[0], sum = array[0];
for(int i = 1; i < length; i++){
sum = sum+array[i];
if(sum < array[i])
sum = array[i];
if(CurrentMax < sum)
CurrentMax = sum;
}
return CurrentMax;
}
int main()
{
vector<int> arr={2,-1,3,10,-4,7,2,-5};
int res = FindGreatestSumOfSubArray(arr);
cout<<res<<endl;
}
最大子序列和的问题
最新推荐文章于 2022-07-10 22:04:24 发布