Python3 DFS 递归

24点游戏算法

http://www.nowcoder.com/questionTerminal/fbc417f314f745b1978fc751a54ac8cb

import sys
def dfs(nums):
    l = len(nums)
    if len(nums) == 1:
        return abs(nums[0] - 24) < eps
    for i in range(l):
        for j in range(i + 1, l):
            new_nums = [nums[k] for k in range(l) if i != k != j]
            if dfs(new_nums + [nums[i] + nums[j]]) or dfs(new_nums + [nums[i] - nums[j]]) or dfs(new_nums + [nums[j] - nums[i]])\
                    or dfs(new_nums + [nums[i] * nums[j]]) or (abs(nums[j]) > eps and dfs(new_nums + [nums[i] / nums[j]]))\
                    or (abs(nums[i]) > eps and dfs(new_nums + [nums[j] / nums[i]])):
                return True
    return False

eps = 1e-6
for line in sys.stdin:
    nums = list(map(int, line.split()))
    print('true' if dfs(nums) else 'false')
全部评论

相关推荐

我将逐步学习姐妹的语言艺术
一片特立独行的面包:这攻击力
点赞 评论 收藏
分享
点赞 评论 收藏
分享
03-16 22:00
武汉大学 C++
幸福的小熊猫想要offer:我阿里投的 c++岗,面试官说自己是做 java 的,c++这辈子才有了
点赞 评论 收藏
分享
评论
6
4
分享

创作者周榜

更多
牛客网
牛客企业服务