题解 | #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 广东

相关推荐

06-12 10:50
门头沟学院 Java
你的不定积分没加C:我怎么在学院群看到了同样的话
点赞 评论 收藏
分享
看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗? 那对老老实实面试的人岂不是不公平....
程序员牛肉:公平那是对小孩子讲的童话故事,成年人的世界只有能不能接受失败的后果。 你要是能接受面试作弊被发现之后多家公司联合永久拉黑的后果,你就搞。
点赞 评论 收藏
分享
评论
8
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务