题解 | #24点游戏算法#

24点游戏算法

http://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb

答案里经常出现的help函数算递归解的方法没办法计算两个乘号一个加号的情况 测试可以考虑基础情况(64),无法实现24的情况(1004),一定要有优先级的情况(2 2 10 1),无法递归解的情况(2 2 7 5)

import itertools#注意两个乘法一个加法和需要括号才能凑24点的情况!括号是可以被使用的
while True:
    try:
        nums = list(map(str, input().split()))
        op = ['+', '-', '*', '/']
        flag = False#标志位初始化
        p = list(itertools.permutations(nums))
        #全排列所有数字和符号出现的可能,注意permutations计算列表返回列表,eval计算字符串返回整数
        for q in p:
            for i in op:
                for j in op:
                    for k in op:#区分优先级
                        inter1 = eval(q[0] + i + q[1])
                        inter2 = eval(str(inter1) + j + q[2])
                        inter3 = eval(str(inter2) + k + q[3])
                        if inter3 == 24:
                            flag = True
                        #以下是不能使用括号的情况,没有优先级
                        #if eval(q[0] + i + q[1] + j + q[2] + k + q[3]) == 24:
                         #   flag = True
        if flag:
            print('true')
        else:
            print('false')
    except:
        break
全部评论
优化了一下for下面的语句 “2+2”的结构现在也能判断了 如 2 2 5 7,1 1 5 7 等 inter1 = eval(q[0] + i + q[1]) inter2 = eval(str(inter1) + j + q[2]) inter3 = eval((str(inter2) + k + q[3])) inter4 = eval(q[2] + j + q[3]) inter5 = eval((str(inter1) + k + str(inter4))) if inter3 == 24 or inter5 == 24: flag = True
1 回复 分享
发布于 2022-12-08 03:18 陕西

相关推荐

粗心的雪碧不放弃:纯学历问题,我这几个月也是一直优化自己的简历,后来发现优化到我自己都觉得牛逼的时候,发现面试数量也没有提升,真就纯学历问题
点赞 评论 收藏
分享
霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
评论
4
2
分享
牛客网
牛客企业服务