采用了dfs,符合条件就保存到list2中,并且返回,继续回溯找到所有的情况。
list1=input().split()
dict1={'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}
list2=[] # 存放符合条件的
# 定义递归调用的函数
def func(list1,res_str,res_num):
if len(list1)==0: # 递归结束条件
if res_num==24:
list2.append(res_str)
return
for i in range(len(list1)):
func(list1[0:i]+list1[i+1:],f'{res_str}+{list1[i]}',res_num+int(dict1[list1[i]]))
func(list1[0:i]+list1[i+1:],f'{res_str}-{list1[i]}',res_num-int(dict1[list1[i]]))
func(list1[0:i]+list1[i+1:],f'{res_str}*{list1[i]}',res_num*int(dict1[list1[i]]))
func(list1[0:i]+list1[i+1:],f'{res_str}/{list1[i]}',res_num//int(dict1[list1[i]]))
return
if 'joker' in list1 or 'JOKER' in list1:
print('ERROR')
else:
for i in range(len(list1)): # 取出列表第一个元素,带入函数
func(list1[0:i]+list1[i+1:],list1[i],int(dict1[list1[i]]))
if len(list2)>0:
print(list2[0])
else:
print('NONE')