每日一道算法题-----连续最大和

每日一道算法题-----连续最大和_第1张图片

连续最大和

  • 题目解析
  • 代码

题目解析

链接: B站视频讲解

代码

#include 
using namespace std;

int main()
{
    int size;
    cin >> size;
    if (size == 0) return 0;

    int* dp = new int[size];
    int* num = new int[size];

    for (int i = 0; i < size; i++)
    {
        cin >> num[i];
    }

    dp[0] = num[0];
    int max = dp[0];

    for (int i = 1; i < size; i++)
    {
        if (dp[i - 1] > 0)
        {
            dp[i] = dp[i - 1] + num[i];
        }
        else
        {
            dp[i] = num[i];
        }

        if (max < dp[i])
        {
            max = dp[i];
        }
    }

    cout << max << endl;

    // 释放动态分配的数组内存
    delete[] dp;
    delete[] num;

    return 0;
}

// 64 位输出请用 printf("%lld")

你可能感兴趣的:(算法题解,算法)