【题目描述】
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 个数。
【参考答案】