明确dp
数组:以nums[i]结尾
的「最大的子数组和」为dp[i]
明确选择:dp[i]
有两种「选择」,要么与前面的相邻子数组连接,形成一个和更大的子数组;要么不与前面的子数组连接,自成一派,自己作为一个子数组
明确base case:dp[i]
初始值为 num[i]
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=110;
int main() {
int n, num[maxn] = { 0 };
int dp[maxn];
cin >> n;
for (int i = 0; i < n; i++) {
cin >> num[i];
}
int ans = -1;
dp[0] = num[0];
for (int i = 1; i < n; i++) {
dp[i] = num[i];
dp[i] = max(dp[i], dp[i - 1] + num[i]);
ans = max(ans, dp[i]);
}
cout << ans;
system("pause");
return 0;
}