【题目描述】

Given an array of integers and a number k, find k non-overlapping subarrays which have the largest sum.The number in each subarray should be contiguous.Return the largest sum.

Notice:The subarray should contain at least one number

给定一个整数数组和一个整数 k,找出 k 个不重叠子数组使得它们的和最大。每个子数组的数字在数组中的位置应该是连续的。返回最大的和。

注意:子数组最少包含一个数


【题目链接】

http://www.lintcode.com/en/problem/maximum-subarray-iii/


【题目解析】

最重要的思路:

维护一个 globalMax [ k+1 ] [ len+1 ] 的矩阵, globalMax [ i ] [ j ]  代表了前 j 个数中取 i 个 subarray 得到的最大和, 注意这里第 j 个数不一定被包括。

一个 int 类型: localMax, 每次写第 globalMax 的 第 i 行 第 j 列时用到的, 记录前 j 个数中取 i 个 subarray 得到的最大和, 但包括第 j 个数。


【参考答案】

http://www.jiuzhang.com/solutions/maximum-subarray-iii/