m0_63442823 2023-11-15 21:19 采纳率: 71.4%
浏览 8
已结题

python返回完成游戏的所有可能方法的数量

#遇到的问题:在 Python 中创建一个函数,该函数返回完成游戏的所有可能方法的数量。jumps(n: int, a: int, b: int)

img

img


#该怎么做啊!!

  • 写回答

2条回答 默认 最新

  • 梦幻精灵_cq 2023-11-15 23:25
    关注
    • 我的解法很笨,就是穷举所有a、b组合到levels = n的方案,最后输出总方案数量。(这初期的想法,不切实际啊😂😂)

    • 琢磨到今天中午(2023-11-19 13:27,终于完成代码调试),终于“完美”解开了您的“谜题”🤗🤗

      img


      img

    python代码

    #!/sur/bin/nve python
    # coding: utf-8
    from itertools import combinations
    
    
    comCount = lambda n,m: len(list(combinations([0]*n, m))) # 求不同组合单行匿名函数。
    
    
    def jumps(n, a, b): # 计算所有不同游戏组合函数。
        print(f"\nn, a, b = {n}, {a}, {b}\n\n计算过程:")
        a1, b1 = not n%a, not n%b
        count = 2 if a1 and b1 else 1 if a1 or b1 else 0 # 单独用a、b完成游戏的方。
    
        for i in range(1, n//a + 1):
            j = (n - a*i)//b
            m = i + j
            
            if a*i + b*j == n and j:
                less = min((i, j))
                count2 = comCount(i+j, less)
                print(f"在{i+j}个位置取{less}个位置,有{count2}种组合。\n{a}×{i} + {b}×{j} = {n}")
                    
                count += count2
                
        return count
    
    
    if __name__  == "__main__":
        n, a, b, result = 4, 1, 2, 5
        #n, a, b, result = 8, 2, 3, 4
        #n, a, b, result = 11, 6, 7, 0
        #n, a, b, result = 30, 3, 5, 58
        #n, a, b, result = 100, 4, 5, 1167937
        print(f"\n预期输出:{result}\n实际输出:{jumps(n, a, b)}")
    
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 12月1日
  • 已采纳回答 11月23日
  • 创建了问题 11月15日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部