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

全部评论

相关推荐

Pandaileee:校友加油我现在也只有一个保底太难了
点赞 评论 收藏
分享
09-29 11:19
门头沟学院 Java
点赞 评论 收藏
分享
在校生实习:我觉得平时学校肯定有各种大作业吧。包装一下写项目里。特长那块喧宾夺主了,项目肯定是大头。特长里比如:熟悉vscode,这个感觉不具有吸引性。简要介绍你会什么语言,什么工具等就行了。同26找实习,我是个超级菜鸡😭大家一起加油
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务