题解 | #24点游戏算法#

24点游戏算法

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

def judgePoint24(num):
    e = 1e-6
    
    def operate(x, y):
        return [x+y, x-y, x*y] + ([x/y] if y - 0 > e else []) + ([y/x] if x - 0 > e else [])

    def dfs(num):
        # 若只剩一个数字,判断是否为24
        if len(num) == 1:
            return abs(num[0] - 24) < e
        n = len(num)
        # 遍历列表中所有数字
        for i in range(n):
            for j in range(n):
                # 针对不同的两个数字
                if i != j:
                    remains = [num[k] for k in range(n) if k != i and k != j] #去掉两个数字后的列表
                    for value in operate(num[i], num[j]):
                        if dfs(remains + [value]):
                            return True
        return False

    if dfs(num):
        return "true"
    else:
        return "false"
    
num = list(map(int, input().split()))
print(judgePoint24(num))

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 18:35
简历上把1个月实习写成了3个月,会进行背调吗?
码农索隆:一个月有一个月的实习经历,三个月有三个月的实习经历
简历当中有水分算不算造假...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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