题解 | #24点游戏算法#

24点游戏算法

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

学习了这位大佬的思路https://blog.nowcoder.net/n/ecc7958961ea4037b488fddb34fd70ee?f=comment,在此基础上考虑了括号的使用情况。

import itertools

def noPara(arr, y):
    lis = [y]
    for i in arr:
        lis.append(i)
        lis.append(i + y)
        lis.append(i - y)
        lis.append(i*y)
        lis.append(i/y)
    return lis

def para(a, b, c, d):
    ans1 = (a + b) * (c + d)
    ans2 = (a + b) * (c - d)
    ans3 = (a - b) * (c + d)
    ans4 = (a - b) * (c - d)
    return [ans1, ans2, ans3, ans4]

num_list = [int(i) for i in input().split(' ')]
judge = 0
for i in range(len(list(itertools.permutations(num_list)))):
    a, b, c, d = list(itertools.permutations(num_list))[i]
    lis1 = noPara([a], b)
    lis2 = noPara(lis1, c)
    lis3 = noPara(lis2, d)
    lis3.extend(para(a, b, c, d))
    if 24 in lis3:
        print('true')
        judge = 1
        break
if judge == 0:
        print('false')






全部评论

相关推荐

牛客刘北:如果暑期实习是27届的话,你要晚一年才会毕业,企业为什么会等你呢?要搞清时间逻辑呀!27届现在实习只能是在暑假实习,这是日常实习,不是暑期实习。所以多去投日常实习吧,暑期实习肯定不会要你的
点赞 评论 收藏
分享
机械打工仔:有说的你怀疑一下就行了,直接问也太实诚了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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