题解 | #24点运算#py递归

24点运算

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

d = {'3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9,
    '10':10, 'J':11, 'Q':12, 'K':13, 'A':1, '2':2}
def f(nums, target):
    if len(nums) == 1 and d[nums[0]] == target:
        res.append(nums[0])
        return True
        
    for i in range(len(nums)):
        a = nums[i]
        b = nums[:i] + nums[i+1:]
        if f(b, target + d[a]):
            res.append('-' + a)
            return True
        elif f(b, target - d[a]):
            res.append('+' + a)
            return True
        elif f(b, target * d[a]):
            res.append('/' + a)
            return True
        elif f(b, target / d[a]):
            res.append('*' + a)
            return True
        
while True:
    try:
        nums = input().strip()
        if 'joker' in nums or 'JOKER' in nums:
            print('ERROR')
        else:
            nums = nums.split()
            res = []
            if f(nums, 24):
                print(''.join(res))
            else:
                print('NONE')
    except:
        break

全部评论

相关推荐

头像
10-09 19:35
门头沟学院 Java
洛必不可达:java的竞争激烈程度是其他任何岗位的10到20倍
点赞 评论 收藏
分享
10-31 14:54
已编辑
门头沟学院 算法工程师
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务