【发布时间】:2012-09-05 09:13:35
【问题描述】:
你有一组 n 个对象,它们给出了整数位置。对象的组 是同一位置的一组对象(不一定是该位置的所有对象:单个位置可能有多个组)。对象可以向左或向右移动,目标是移动这些对象以形成 k 个组,并且移动的距离最小。
例如:
- 初始位置为 [4,4,7],k = 3:最小成本为 0。
- [4,4,7] 和 k = 2:最小成本为 0
- [1,2,5,7] 和 k = 2:最小成本为 1 + 2 = 3
我一直在尝试使用贪婪的方法(通过计算哪个动作最短),但这不会奏效,因为每一步都涉及两个可以以任一方式移动的元素。我还不能制定动态编程方法,但我正在努力。
【问题讨论】:
-
难道不是:Set::[1,2,5,9]--->分成2组:::Min Moves=1+3=4?
-
不是真的,位置 2 会有 2 个元素.....所以 Moves=1+3*2=7
-
为什么不能把 5 和 1 移到 2?
标签: algorithm