现烤鱿鱼圈 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日

悬赏问题

  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题