题解 | #24点运算#

24点运算

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

采用了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')

全部评论

相关推荐

之前自己不懂事,投了字节,基本是自己第一次面试,一面就挂了
观水:前几天有个学化学的做前端,加上实习面了22次字节最后成功了
点赞 评论 收藏
分享
2025-12-25 16:26
已编辑
河北科技学院 Java
勇敢的牛油不服输:2800-300那不等于2500一个月吗兄弟们
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务