题解 | #24点运算# 参考霏坂的,就加了注释
24点运算
https://www.nowcoder.com/practice/7e124483271e4c979a82eb2956544f9d
a = input().split(' ')
card_dict = {'2': 2,'3': 3,'4': 4,'5': 5,'6': 6,'7': 7,'8': 8, '9': 9,'10': 10,'J': 11, 'Q': 12,'K': 13,'A': 1}
def dfs(card,target,out): # 入参:剩余的牌、剩余牌的值、拼接字符串
if len(card)==1 and card_dict[card[0]]==target:
L.append(card[0]+out) # 最后一张牌拼接到out
else:
for i in range(len(wait)): # 4张牌都会从最后面开始,分别进行+-*/递归。
w = card[:i]+card[i+1::] # 去掉序号 i 的牌
c = card_dict[card[i]] # 拿到 i 的牌
dfs(w, target-c, '+'+wait[i]+out)
dfs(w, target+c, '-'+wait[i]+out)
dfs(w, target*c, '/'+wait[i]+out)
dfs(w, target/c, '*'+wait[i]+out)
L = []
if 'joker' in a or 'JOKER' in a:
print('ERROR')
else:
dfs(a,24,'')
if not L:
print('NONE')
else:
print(L[0])

字节跳动公司福利 1383人发布