题目解析
链接: B站视频讲解
代码
#include <iostream>
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")