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


全部评论

相关推荐

2025-11-13 20:16
已编辑
厦门理工学院 软件测试
专业嗎喽:硕佬,把学校背景放后面几段,学校背景双非还学院,让人看了就不想往下看。 把实习经历和个人奖项放前面,用数字化简述自己实习的成果和掌握的技能,比如负责项目一次通过率90%,曾4次发现项目潜在问题风险为公司减少损失等等
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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