C++最大子序列

#include 
#include 

int MaxSubseqSum(int arr[], int n)
{
    int max_sum = INT_MIN; // 最大和初始化为最小整数
    int this_sum = 0;

    for (int i = 0; i < n; i++)
    {
        this_sum += arr[i];
        if (this_sum > max_sum) // 如果当前和比最大和大
            max_sum = this_sum; // 更新最大和
        if (this_sum < 0)      // 如果当前和小于0,
            this_sum = 0;      // 则将当前和归零,从下一个元素重新开始计算
    }

    return max_sum;
}

int main()
{
    int arr[] = { -2, 11, -4, 13, -5, -2 };
    int n = sizeof(arr) / sizeof(arr[0]);

    int max_sum = MaxSubseqSum(arr, n);

    std::cout << "The max sum of subsequence is: " << max_sum << std::endl;

    return 0;
}

这个程序的时间复杂度是O(N),因为它只需要遍历整个数组一次就可以得到最大和。

你可能感兴趣的:(C++更多语法,c++,算法,数据结构)