现烤鱿鱼圈 2021-11-10 15:45 采纳率: 25%
浏览 28
已结题

伪代码:求最小移动距离和移动次数

M个正方形瓷砖连续放置在一条直线上。每两个相邻瓷砖之间的距离是1。N个硬币被放置在N个瓷砖上,这些瓷砖可能不是连续的。你被要求将所有的硬币堆移到相同的瓷砖上,其中M>=N,找出需要最小的总移动距离的部分。
写下如何将所有硬币移到一个瓷砖上的伪代码,并计算总的移动次数。

  • 写回答

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是奇数就更好办了, 最后剩下来一枚硬币都不用移动.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月10日
  • 已采纳回答 12月2日
  • 创建了问题 11月10日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备