首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

哪位高手能解决这个排序有关问题,与众不同的排序

2012-04-10 
谁能解决这个排序问题,与众不同的排序前面发的类似的帖子估计大家没看懂,这样我改变一下方式说一下:有N个

谁能解决这个排序问题,与众不同的排序
前面发的类似的帖子估计大家没看懂,这样我改变一下方式说一下:


有N个位置,从左到右,其位置上分别有一块石头(重量各不相等),现在要求把这些石头排好序,从左到右依次递增.但移动石头要花费一定的费用,费用的大小就是移动石头的重量。问怎样移动石头才能使排序的费用最小。

例如:有三个位置,从左到右 石头的重量依次是:3(n1),1(n2),2(n3);(ni表示第i个位置)
  第一种排序方式:先让n1上的石头与n3位置上的石头交换交换,然后n1上的石头与n2交换,(即:3,2 交换,然后2,1交换)此时花费3*1+2*2+1*1=8(重量为3的石头移动了1次,重量为2的石头移动了2次,重量为1的石头移动了1次);

  第二种排序:先让1,2交换,然后1,3交换.此时的费用1*2+2*1+3*1=7;


我们看到不同的移动石头方式有不同的费用,问:对于给定的N个位置,和每个位置上的石头重量,怎样移动排序能使费用最小,并且求出最小费用。

[解决办法]
最优解用动态规划解
[解决办法]
除了已经对位的石头,先找到尽可能多的环。
恢复每个环的最小代价必然是:最大值+次大值+2*sum(其它值),也就是第一次移动(最大值与次大值)中的一块石头,最后一次移动(最大值与次大值)中的另一块石头。
[解决办法]

探讨
除了已经对位的石头,先找到尽可能多的环。
恢复每个环的最小代价必然是:最大值+次大值+2*sum(其它值),也就是第一次移动(最大值与次大值)中的一块石头,最后一次移动(最大值与次大值)中的另一块石头。

热点排行