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

相关推荐

今天 09:08
裁应届生,一分钱补偿没有,离职了还脑控你,跟踪你,定位你,丁东服务是搞系每一个人
牛客吹哨人:建议细说...哨哥晚点统一更新到黑名单:不要重蹈覆辙!25届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1317104
叮咚买菜稳定性 8人发布 投递叮咚买菜等公司10个岗位 >
点赞 评论 收藏
分享
点赞 评论 收藏
分享
3 2 评论
分享
牛客网
牛客企业服务