Python编程300例:快速构建可执行高质量代码
上QQ阅读APP看书,第一时间看更新

例16 移动石子

1.问题描述

x轴上分布着n个石子,用arr数组表示它们的位置。把这些石子移动到1,3,5,7,2n-1或者2,4,6,8,2n。也就是说,这些石子移动到从1开始连续的奇数位,或从2开始连续的偶数位上。返回最少的移动次数。每次只可以移动1个石子,只能把石子往左移动1个单位或往右移动1个单位。同一个位置不能同时有2个石子。

2.问题示例

[5,4,1],只需要把4移动1步到3,所以输出是1。arr=[1,6,7,8,9],最优的移动方案为把1移动到2,把6移动到4,把7移动到6,把9移动到10,所以输出是5。

3.代码实现

4.运行结果

数组:[1,6,7,8,9]

最小移动数:5