我过去遇到过一些与此类似的问题,但我仍然不知道如何解决这个问题。问题是这样的:
您将获得一个大小为 n <= 1000 且 k <= n 的正整数数组,这是您必须将数组拆分成的连续子数组的数量。您必须输出最小值 m,其中 m = max{s[1],..., s[k]},并且 s[i] 是第 i 个子数组的总和。数组中的所有整数都在 1 到 100 之间。示例:
Input: Output:
5 3 >> n = 5 k = 3 3
2 1 1 2 3
将数组拆分为 2+1 | 1+2 | 3将最小化m。
我的蛮力想法是使第一个子数组在位置 i 结束(对于所有可能的 i),然后尝试以可能的最佳方式将数组的其余部分拆分为 k-1 个子数组。但是,这是指数解决方案,永远不会奏效。
所以我正在寻找解决它的好主意。如果你有请告诉我。
谢谢你的帮助。