我觉得这道题的解析中程序是错误的,因为我写了一组数据,那个程序算出来的数明显不对,数据如下:
17
890 158 877 447 153 840 42 948 557 897 143 304 203 632 754 498 772
803 237 214 593 441 270 599 812 634 677 973 86 910 246 900 237 605
本人的思路是每个初始位置不在排序完成后的位置的元素都要移动,他们的重量对应的体力是一定要消耗的,只不过和他们交换的那个元素的重量消耗的体力是额外的,所以应该让额外消耗的体力尽量小。
方法为找到没有在正确位置上的元素中重量最小的元素a,然后找到应该出现在a当前位置的元素b,ab交换。后续交换都是这样进行的