M个正方形瓷砖连续放置在一条直线上。每两个相邻瓷砖之间的距离是1。N个硬币被放置在N个瓷砖上,这些瓷砖可能不是连续的。你被要求将所有的硬币堆移到相同的瓷砖上,其中M>=N,找出需要最小的总移动距离的部分。
写下如何将所有硬币移到一个瓷砖上的伪代码,并计算总的移动次数。
伪代码:求最小移动距离和移动次数
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 对象被抛出 2021-11-10 16:41关注
有个想法不知道对不对, 首先找到最两边的硬币, 假设在a瓷砖和b瓷砖 a<b.
不可能往更两边的方向去移动, 只能往[a, b]这个区间内移动, 而在这个区间内不管怎么移动, 这两枚硬币移动的次数之和是一定的, 就是b-a.
也就是说, f(n) = f(n-2)+b-a
这样就有递归了
唯一的问题是解决出口.
首先分奇偶, 如果n是偶, 最后剩下来两枚硬币c, d, 只要移到[c, d]区间内的任意一个瓷砖上就行.
如果n是奇数就更好办了, 最后剩下来一枚硬币都不用移动.本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥50 三种调度算法报错 有实例
- ¥15 关于#python#的问题,请各位专家解答!
- ¥200 询问:python实现大地主题正反算的程序设计,有偿
- ¥15 smptlib使用465端口发送邮件失败
- ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
- ¥15 对于squad数据集的基于bert模型的微调
- ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
- ¥20 steam下载游戏占用内存
- ¥15 CST保存项目时失败
- ¥20 java在应用程序里获取不到扬声器设备