题解 | #24点运算# 为啥我这个dfs比直接循环还复杂

24点运算

https://www.nowcoder.com/practice/7e124483271e4c979a82eb2956544f9d

card_list = list("A23456789") + ["10"] + list("JQK")


def compute(stack, res, solution):
    if not stack and res == 24:
        result.append(solution.copy())
        return True

    if stack:  # +
        if compute(stack[1:], res + stack[0], solution + ["+", stack[0]]):
            return True

    if stack:  # -
        if compute(stack[1:], res - stack[0], solution + ["-", stack[0]]):
            return True

    if stack:  # *
        if compute(stack[1:], res * stack[0], solution + ["*", stack[0]]):
            return True
    if stack:  # /
        if compute(stack[1:], res //stack[0], solution + ["/", stack[0]]):
            return True

    return False


s = input().split()

import itertools

out = ""
if "joker" in s or "JOKER" in s:
    out = "ERROR"
else:
    pre_nums = [card_list.index(i) + 1 for i in s]
    for nums in itertools.permutations(pre_nums):
        result = []
        if compute(nums[1:], nums[0], [nums[0]]):
            temp = [card_list[i - 1] if type(i) == int else i for i in result[0]]
            out = "".join(temp)
            break
        else:
            out = "NONE"


print(out)

全部评论

相关推荐

服从性笔试吗,发这么多笔,现在还在发。
蟑螂恶霸zZ:傻 x 公司,发两次笔试,两次部门匹配挂,
投递金山WPS等公司10个岗位 >
点赞 评论 收藏
分享
11-09 11:01
济南大学 Java
Java抽象带篮子:外卖项目真得美化一下,可以看看我的详细的外卖话术帖子
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务