【发布时间】:2012-01-25 09:38:57
【问题描述】:
过去我遇到过一些与此类似的问题,但我仍然不知道如何解决这个问题。问题是这样的:
给定一个大小为 n
Input: Output:
5 3 >> n = 5 k = 3 3
2 1 1 2 3
将数组拆分为 2+1 | 1+2 | 3 将最小化 m。
我的蛮力想法是让第一个子数组在位置 i 结束(对于所有可能的 i),然后尝试以最好的方式将数组的其余部分拆分为 k-1 个子数组。但是,这是指数解决方案,永远不会奏效。
所以我正在寻找解决问题的好主意。如果你有请告诉我。
感谢您的帮助。
【问题讨论】:
-
回溯会带你到那里。
-
这是背包问题的变体吗? en.wikipedia.org/wiki/Knapsack_problem
-
@BlueMonkMN 我认为这个问题更容易。在我不使用动态编程的地方查看我的答案。但是,我不完全确定它是否有效或更快。
-
这是二分搜索。如果子数组不必是连续的,那就很难了。
标签: arrays algorithm split partition-problem