题解 | #24点游戏算法#

24点游戏算法

https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb?tpId=37&tqId=21290&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3Fdifficulty%3D3%26page%3D1%26pageSize%3D50%26search%3D%26tpId%3D37%26type%3D37&difficulty=3&judgeStatus=undefined&tags=&title=

import sys
ops = ["+", "-", "*", "/"]

# 从四个数中任意挑俩数,计算结果放回去,变成仨数
# 从三个数中任意挑俩数,计算结果放回去,变成俩数
# 最后俩数执行运算
def cal(a, b, op):
    if op == "+":
        return a+b
    elif op == "-":
        return a-b
    elif op == "*":
        return a*b
    elif op == "/":
        if b == 0:
            return 0
        else:
            return a/b

def dfs(nums):
    n = len(nums)
    if n == 1:
        return nums[0]
    
    for i in range(n):
        for j in range(n):
            if i != j:
                for op in ops:
					# 首先挑出两个数进行计算
                    nums_copy = [cal(nums[i], nums[j], op)]
                    for k in range(n):
                        if k != i and k != j:
                            nums_copy.append(nums[k])
					# 计算完毕重新进入计算
                    if dfs(nums_copy) == 24:
                        return 24
    return 0
                        
for line in sys.stdin:
    nums = list(map(int, line.strip().split(" ")))
    print("true" if dfs(nums) == 24 else "false")


全部评论

相关推荐

今天 09:08
裁应届生,一分钱补偿没有,离职了还脑控你,跟踪你,定位你,丁东服务是搞系每一个人
牛客吹哨人:建议细说...哨哥晚点统一更新到黑名单:不要重蹈覆辙!25届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1317104
叮咚买菜稳定性 8人发布 投递叮咚买菜等公司10个岗位 >
点赞 评论 收藏
分享
伟大的烤冷面被普调:暨大✌🏻就是强
点赞 评论 收藏
分享
11-15 17:19
湖南大学 Java
成果成果成果果:这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务