【发布时间】:2011-09-11 13:36:30
【问题描述】:
我有一个包含 4 个元素 A={ 的数组 A[] 8 1 2 4}。如何以最小的成本对其进行排序。标准定义如下-
一个。可以交换任意 2 个元素。
b.任何交换的成本都是元素值的总和,如果我交换 8 和 4,成本是 12,结果数组看起来像 A={4 1 2 8},它仍然是未排序的,所以需要更多的交换。
c。需要找到一种方法以最小的成本对数组进行排序。
根据我的观察,贪婪是行不通的,就像在每一步中,以最小的成本将任何元素放在数组中的排序位置。所以需要一个DP解决方案。 有人可以帮忙吗??
【问题讨论】:
-
我看不到如何构建 DP 解决方案。没有明显的方法可以将其分解为子问题。但是,我可以在搜索问题方面看到解决方案。不过,这将是一次详尽的搜索。
-
这是一种计算“成本”的有趣方式
-
真的没有DP方案吗???
-
元素值为正且小于1000,元素个数最大可达1000。
-
我没有看到任何空间限制...所以算法可以是 O(n) 并创建一个单独的索引? (它需要创建一个与 A 大小相同的 B 数组)