题解 | #24点游戏算法#

24点游戏算法

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

'''
每次选两个数出来使用四则运算计算结果后,将新的数加入数组重复递归
如果最后只剩一个元素24那么就找到了,为什么不直接等于24是因为在除法的时候double有一些精度偏差
'''
def func(arr):
    if len(arr) == 1:
        return abs(arr[0]-24) < 0.1**6
    
    for i in range(len(arr)-1):
        for j in range(i+1, len(arr)):
            if func( [arr[i]+arr[j]] + arr[:i] + arr[i+1:j] + arr[j+1:]):
                return True
            if func( [arr[i]*arr[j]] + arr[:i] + arr[i+1:j] + arr[j+1:]):
                return True
            if func( [arr[i]-arr[j]] + arr[:i] + arr[i+1:j] + arr[j+1:]):
                return True
            if func( [arr[j]-arr[i]] + arr[:i] + arr[i+1:j] + arr[j+1:]):
                return True
            if arr[j]!=0 and func( [arr[i]/arr[j]] + arr[:i] + arr[i+1:j] + arr[j+1:]):
                return True
            if arr[i]!=0 and func( [arr[j]/arr[i]] + arr[:i] + arr[i+1:j] + arr[j+1:]):
                return True
    return False

while 1:
    try:
        if func(list(map(int, input().split()))):
            print('true')
        else:
            print('false')
    except:
        break
全部评论
你是真大佬!
点赞 回复 分享
发布于 2023-03-06 16:33 广东

相关推荐

11-14 16:13
已编辑
重庆科技大学 测试工程师
Amazarashi66:不进帖子我都知道🐮❤️网什么含金量
点赞 评论 收藏
分享
3 2 评论
分享
牛客网
牛客企业服务