给定一个整数数组和一个整数 k,找出 k 个不重叠子数组使得它们的和最大。每个子数组的数字在数组中的位置应该是连续的。
int maxSubArray(vector<int> nums, int k) {
vector<vector<int>> dp(nums.size(), vector<int>(k + 1));
for (int i = 0; i < nums.size(); ++i) {
for (int j = 1; j <= k; ++j) {
if (i + 1 < j) {
continue;
}
if (i + 1 == j) {
if (i >= 1) {
dp[i][j] = nums[i] + dp[i - 1][j - 1];
} else {
dp[i][j] = nums[i];
}
continue;
}
dp[i][j] = dp[i - 1][j];
int sum = 0;
for (int w = i; w + 1 >= j; --w) {
sum += nums[w];
dp[i][j] = max(dp[i][j], sum + (w >= 1 ? dp[w - 1][j - 1] : 0));
}
}
}
return dp[nums.size() - 1][k];
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。