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

全部评论

相关推荐

VirtualBool:都去逗他了?
点赞 评论 收藏
分享
野猪不是猪🐗:现在的环境就是这样,供远大于求。 以前卡学历,现在最高学历不够卡了,还要卡第一学历。 还是不够筛,于是还要求得有实习、不能有gap等等... 可能这个岗位总共就一个hc,筛到最后还是有十几个人满足这些要求。他们都非常优秀,各方面都很棒。 那没办法了,看那个顺眼选哪个呗。 很残酷,也很现实
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务