题解 | #24点游戏算法#

24点游戏算法

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

def kk(a):
    n = len(a)
    if n == 1:
        if abs(a[0] - 24) < 1e-6: #因为除法的存在 用abs() < 1e-6判断两数相等是很有必要的 不然8/(3-8/3) 不通过                                            
            return True
        return False
    for i in range(n - 1):
        for j in range(i + 1, n):
            li = []
            for k in range(n):
                if k != i and k != j:
                    li.append(a[k])
            if kk(li + [a[i] * a[j]]):
                return True
            if kk(li + [a[i] + a[j]]):
                return True
            if kk(li + [a[i] - a[j]]):
                return True
            if kk(li + [a[j] - a[i]]):
                return True
            if abs(a[i]) > 1e-6:
                if kk(li + [a[j] / a[i]]):
                    return True
            if abs(a[j]) > 1e-6:
                if kk(li + [a[i] / a[j]]):
                    return True
    return False


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

全部评论

相关推荐

点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务