题解 | #24点运算#

24点运算

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

from re import T
import sys

porker = {'J':'11','Q':'12','K':'13','A':'1'}
def check(numlist, res, sym):
    if len(numlist)==0:
        if res == 24:
            return True, sym
        else:
            return False, sym
    else:
        allflag = False
        for i in range(len(numlist)):
            left = numlist[:i]+numlist[i+1:]
            v = numlist[i]
            if res==0:
                allflag, sym = check(left, int(v), v)
            else:
                flagadd, addsym = check(left, res+int(v), sym+'+'+v)
                flagsub, subsym = check(left, res-int(v), sym+'-'+v)
                flagmut, mutsym = check(left, res*int(v), sym+'*'+v)
                flagdiv, divsym = check(left, res/int(v), sym+'/'+v)
                flag = flagadd or flagsub or flagmut or flagdiv
                allflag = allflag or flag
                if flagadd:
                    sym = addsym
                if flagsub:
                    sym = subsym
                if flagmut:
                    sym = mutsym
                if flagdiv:
                    sym = divsym
            if allflag:
                break
        return allflag, sym

for line in sys.stdin:
    a = line.split()
    error = False
    for j in range(len(a)):
        this = a[j]
        if not this.isdigit():
            if this in porker.keys():
                a[j] = porker[this]
            else:
                error = True
                break
    if error:
        print('ERROR')
    else:
        do, sym = check(a,0,'')
        if do:
            sym = sym.replace('11','J')
            sym = sym.replace('12','Q')
            sym = sym.replace('13','K')
            sym = sym.replace('1','A')
            print(sym)
        else:
            print('NONE')

全部评论

相关推荐

小红书 后端开发 总包n+8w+期权
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务