题解 | #24点游戏算法#

24点游戏算法

https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb

nums = list(map(int, input().split()))
nums.sort()
def dfs(nums): #只能遍历2个数字之间的元素,开头和末尾均无符号
    if len(nums) == 1:#只有一个数字的时候 即递归到最后一个元素
        return nums[0] == 24

    for i in range(len(nums)):
        for j in range(len(nums)):
            if i != j:
                new_nums = [nums[k] for k in range(len(nums)) if k != i and k != j] #i和j不能相同
                # 加法
                if dfs(new_nums + [nums[i] + nums[j]]):
                    return True

                # 减法
                if dfs(new_nums + [nums[i] - nums[j]]):
                    return True

                # 乘法
                if dfs(new_nums + [nums[i] * nums[j]]):
                    return True

                # 除法
                #被除数不为空
                if nums[j] != 0 and dfs(new_nums + [nums[i] / nums[j]]):
                    return True
    return False

if dfs(nums):
    print("true")
else:
    print("false")

全部评论

相关推荐

爱喝奶茶的垂耳兔拥抱太阳:感觉项目和实习没有技术亮点和难点,单纯说了自己干了啥
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务