class Solution {
public:
int maxSumAfterPartitioning(vector<int>& A, int K) {
int n = A.size(); //dp题 花花酱
vector<int> dp(n+1, 0);
for(int i = 1; i <= n; i++){
int m = INT_MIN;
for(int k = 1; k <= min(i, K); k++){
m = max(m, A[i-k]); //i前面K个的最大数值
dp[i] = max(dp[i], dp[i-k]+ m*k);
}
}
return dp[n];
}
};
1043. Partition Array for Maximum Sum
本文介绍了一个使用动态规划解决最大子数组和问题的C++代码实现。通过定义状态转移方程,该算法能在O(n)的时间复杂度内找到数组中长度不超过K的最大子数组和。代码中详细展示了如何迭代计算并更新状态,最终返回最大子数组和。

被折叠的 条评论
为什么被折叠?



