最大子串和

来源:互联网 发布:马来西亚旅游业数据 编辑:程序博客网 时间:2024/05/28 23:11
/***********************************************************************
 * 最大子串和:
 *          给定int类型数组arr,求arr中子串和的最大值
 *          思路:暴力法解决时间复杂度为O(N^2)
 *          时间复杂度为O(N)的解法:前k个数的和如果为负数,就没有
 *              叠加的必要,定会使结果更小。所以从k+1再作为起点累加

 ***********************************************************************/

#include <iostream>#include <vector>using namespace std;int maxSubStrSum(vector<int> &arr){    int result;    int total = 0;    for (int i = 0; i < arr.size(); i++)    {        total += arr[i];        result = result < total ? total : result;        if (total < 0)        {            total = 0;        }    }    return result;}int main(){    int a[6] = {1, -3, 5, -2, 3, 9};    vector<int> arr(a, a+6);    cout << maxSubStrSum(arr);    return 0;}


原创粉丝点击