题解 | 24点游戏算法

24点游戏算法

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



def func(num):
    if len(num) == 1:
        return abs(abs(num[0])-24) < 0.00001
    for i in range(len(num)):
        for j in range(i+1, len(num)):
            m1 = num[i]
            m2 = num[j]
            rst = num[:i] + num[i+1:j] + num[j+1:]
            if func([m1+m2]+rst) or func([m1-m2]+rst) or func([m1*m2]+rst):
                return True
            if m1 != 0 and func([m2/m1]+rst):
                return True
            if m2 != 0 and func([m1/m2]+rst):
                return True


while True:
    try:
        data = list(map(int, input().split()))
        res = func(data)
        if res:
            print("true")
        else:
            print("false")
    except:
        break

全部评论

相关推荐

水墨不写bug:疑似没有上过大学
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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