8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

最少的移动次数以降序降落的砖塔

yeweds 7月前

68 0
我有一个问题,我有n块塔的数量。 我需要按降序重新排列它们。 我只能一次在砖块上移动到相邻的塔。 例如,对于这个问题:...

我有一个问题,其中有n块塔的数量。

我需要按降序重新排列它们。 我只能一次在砖块上移动到相邻的塔。 例如,对于此问题:

4 3 0 1 1

答案是1个移动

对于以下问题:

7 0 0 0 1

答案是3个动作:7 1 0 0 0或6 1 1 0 0。

我当前具有此功能:

def compute_min_moves(towers, moves = 0):
    # Si 0 o 1 torre, no se hace nada
    if len(towers) < 2:
        return moves

    for i in range(len(towers)-1, 0 ,-1):
        if towers[i - 1] < towers[i]:
            diff = 0
            while towers[i - 1] < towers[i]:
                diff += 1
                towers[i - 1] += diff
                towers[i] -= diff
                moves += diff   
           
            sub_array = towers[i-1:]
            if not all(earlier >= later for earlier, later in zip(sub_array, sub_array[1:])):
                moves = compute_min_moves(towers, moves)

    return moves

我看不到我们如何获得最佳解决方案。

帖子版权声明 1、本帖标题: 最少的移动次数以降序降落的砖塔
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由yeweds在本站《python》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 您的算法只能在塔之间向右移动,因此您提出的解决方案将无法找到4 3 0 1 1(因为它从左到右移动了碎片)。
  • 另一个小笔记,您说“我们如何获得最佳解决方案” - 这是一项要求吗? 也就是说,您是要找到最佳解决方案的任务吗? 还是您只需要在合理的时间内适合给定问题的解决方案? (此处的“工作”是指找到最佳解决方案,但也许在计算解决方案的最佳时间内也不是)
  • 我的任务是找到使数组下降的最小动作数量。 通过这样做,我假设我们找到了“最佳”解决方案。 没有时间或解决方案的复杂性的要求。
  • 有理由
  • 没有理由不支持一个人。 我只是从从左到右的算法上考虑了一种观点。
  • 有趣的是,即使在非常正式地重新处理问题之后,与GPT 4的Chatgpt提出了各种破碎的解决方案。 克劳德(Claude)做得更好,但误解了这个问题是另一个更常见的问题,并且难以适应提出的问题。 Gemini Advanced完全插入它,并提出了一个非常简短且完全错误的解决方案。 因此,我认为程序员还没有工作...
返回
作者最近主题: