题解 | #24点运算#

24点运算

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

from itertools import permutations

def fun():
    num = list(map(int, input().split(' ')))

    def dfs(n, value, i):
        if i == 3:  # 当前列表已经递归完
            return True if value == 24 else False  # 当前递归计算的值是不是24
        # 递归当前列表的每一种运算
        if dfs(n, value + n[i + 1], i + 1) or dfs(n, value - n[i + 1], i + 1) or dfs(n, value * n[i + 1], i + 1) or dfs(n, value / n[i + 1], i + 1):
            return True
        elif i == 1 and (dfs(n, value * (n[i+1] + n[i+2]), i+2) or dfs(n, value * (n[i+1] - n[i+2]), i+2)):  # 后两位是括号
            return True
        elif i == 1 and ((n[i+1] - n[i+2] != 0 and dfs(n, value / (n[i+1] - n[i+2]), i+2)) or dfs(n, value / (n[i+1] + n[i+2]), i+2)):  # 后两位是括号
            return True
        return False
    # 循环输入的4位数的排列
    for _n in list(permutations(num)):
        if dfs(_n, _n[0], 0):  # 只要有一种满足则停止
            print('true')
            return
    print('false')


fun()

全部评论

相关推荐

09-01 21:40
已编辑
同济大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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