题解 | #24点游戏算法#

24点游戏算法

http://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb

def run(al, n=24):
    res = 0
    if len(al) == 1:
        return al[0] == n
    for i in range(len(al)):
        tmp = al[:i]+al[i+1:]
        if run(tmp, n-al[i]) or run(tmp, n+al[i]) or run(tmp, n*al[i]) or run(tmp, n/al[i]):
            return True
    return False
    
al = list(map(int, input().split()))
res = run(al)
if res:
    print("true")
else:
    print("false")
全部评论
写的递归思路很好,但其实是错的。因为a*b+c*d这种格式是无法被拆开为24加减乘除一个东西再递归别的三个数。你试试用你的函数来应对3 3 5 5,目标34,函数报False,但3*3+5*5=34应该报True。
点赞 回复 分享
发布于 2022-10-27 23:35 广东

相关推荐

菜鸡29号:根据已有信息能初步得出以下几点: 1、硕士排了大本和大专 2、要求会多语言要么是招人很挑剔要么就是干的活杂 3、给出校招薪资范围过于巨大,说明里面的薪资制度(包括涨薪)可能有大坑
点赞 评论 收藏
分享
牛客765689665号:没有实习是硬伤,央国企看学历
点赞 评论 收藏
分享
评论
8
2
分享

创作者周榜

更多
牛客网
牛客企业服务