题解 | #24点游戏算法#

24点游戏算法

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

nums = list(map(int,input().split()))
def dfs(nums):

    if len(nums) == 1:
        if abs(nums[0]-24)<1e-6:
            return True
    for i in range(len(nums)-1):
        for j in range(i+1,len(nums)):
            
            a = nums[i]
            b = nums[j]
            for op in ["+","-","*","/"]:
                for k in range(2):
                    
                    if k==0:
                        if op=="/" and b==0:
                            return False
                        else:
                            new_nums = nums+[eval(op.join([str(a),str(b)]))]
                    else:
                        if op=="/" and a==0:
                            return False
                        else:
                            new_nums = nums+[eval(op.join([str(b),str(a)]))]
                    new_nums.remove(a)
                    new_nums.remove(b)
                    if dfs(new_nums):
                            return True
    return False
print(str(dfs(nums)).lower())

全部评论

相关推荐

03-05 12:52
吉林大学 Java
挣K存W养DOG:他的价值在于把他家里积攒的财富回馈给社会
点赞 评论 收藏
分享
牛客245670684号:虚拟货币预测正确率百分之99,还要找工作干嘛,不早就财富自由了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务