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

相关推荐

05-29 20:34
门头沟学院 C++
KarlAllen:得做好直接春招的准备。学历差的话,一是面试要求会比学历好的严格不少,二是就算面试通过了也会被排序。总之暑期和秋招对于学历差的就是及其不友好
无实习如何秋招上岸
点赞 评论 收藏
分享
06-13 10:15
门头沟学院 Java
想去夏威夷的大西瓜在...:我也是27届,但是我现在研一下了啥项目都没有呀咋办,哎,简历不知道咋写
点赞 评论 收藏
分享
评论
8
2
分享

创作者周榜

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