谁能解决这个排序问题,与众不同的排序
前面发的类似的帖子估计大家没看懂,这样我改变一下方式说一下:
有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(其它值),也就是第一次移动(最大值与次大值)中的一块石头,最后一次移动(最大值与次大值)中的另一块石头。
[解决办法]