最大子序列和的问题

来源:互联网 发布:阿里云网站监控 编辑:程序博客网 时间:2024/06/18 12:50
#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;}

原创粉丝点击