题解 | #24点游戏算法#

24点游戏算法

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

while True:
    try:
        a = input().split()
        b = ['+','-','*','/']
        flag = 0
        
        for i_1 in range(4):
            for i_2 in range(4):
                for i_3 in range(4): #三个符号空穷举
                        c = []
                        c.append('('+'('+ a[0]+b[i_1]+a[1] + ')'+b[i_2] + a[2]+ ')'+b[i_3]+a[3]) #四个数字空,穷举,但要注意计算顺序,虽然符号没有括号,但是默认前两个数计算出来再+-*或/第三个数
                        c.append('('+'('+ a[0]+b[i_1]+a[1] + ')'+b[i_2]+a[3]+ ')'+b[i_3]+a[2])
                        c.append('('+'('+ a[0]+b[i_1]+a[2] + ')'+b[i_2]+a[1]+ ')'+b[i_3]+a[3])
                        c.append('('+'('+ a[0]+b[i_1]+a[2] + ')'+b[i_2]+a[3]+ ')'+b[i_3]+a[1])
                        c.append('('+'('+ a[0]+b[i_1]+a[3] + ')'+b[i_2]+a[2]+ ')'+b[i_3]+a[1])
                        c.append('('+'('+ a[0]+b[i_1]+a[3] + ')'+b[i_2]+a[1]+ ')'+b[i_3]+a[2])
                        c.append('('+'('+ a[1]+b[i_1]+a[0] + ')'+b[i_2]+a[2]+ ')'+b[i_3]+a[3])
                        c.append('('+'('+ a[1]+b[i_1]+a[0] + ')'+b[i_2]+a[3]+ ')'+b[i_3]+a[2])
                        c.append('('+'('+ a[1]+b[i_1]+a[2] + ')'+b[i_2]+a[3]+ ')'+b[i_3]+a[0])
                        c.append('('+'('+ a[1]+b[i_1]+a[2] + ')'+b[i_2]+a[0]+ ')'+b[i_3]+a[3])
                        c.append('('+'('+ a[1]+b[i_1]+a[3] + ')'+b[i_2]+a[2]+ ')'+b[i_3]+a[0])
                        c.append('('+'('+ a[1]+b[i_1]+a[3] + ')'+b[i_2]+a[0]+ ')'+b[i_3]+a[2])
                        c.append('('+'('+ a[2]+b[i_1]+a[0] + ')'+b[i_2]+a[1]+ ')'+b[i_3]+a[3])
                        c.append('('+'('+ a[2]+b[i_1]+a[0] + ')'+b[i_2]+a[3]+ ')'+b[i_3]+a[1])
                        c.append('('+'('+ a[2]+b[i_1]+a[1] + ')'+b[i_2]+a[0]+ ')'+b[i_3]+a[3])
                        c.append('('+'('+ a[2]+b[i_1]+a[1] + ')'+b[i_2]+a[3]+ ')'+b[i_3]+a[0])
                        c.append('('+'('+ a[2]+b[i_1]+a[3] + ')'+b[i_2]+a[0]+ ')'+b[i_3]+a[1])
                        c.append('('+'('+ a[2]+b[i_1]+a[3] + ')'+b[i_2]+a[1]+ ')'+b[i_3]+a[0])
                        c.append('('+'('+ a[3]+b[i_1]+a[1] + ')'+b[i_2]+a[2]+ ')'+b[i_3]+a[0])
                        c.append('('+'('+ a[3]+b[i_1]+a[1] + ')'+b[i_2]+a[0]+ ')'+b[i_3]+a[2])
                        c.append('('+'('+ a[3]+b[i_1]+a[2] + ')'+b[i_2]+a[0]+ ')'+b[i_3]+a[1])
                        c.append('('+'('+ a[3]+b[i_1]+a[2] + ')'+b[i_2]+a[1]+ ')'+b[i_3]+a[0])
                        c.append('('+'('+ a[3]+b[i_1]+a[0] + ')'+b[i_2]+a[2]+ ')'+b[i_3]+a[1])
                        c.append('('+'('+ a[3]+b[i_1]+a[0] + ')'+b[i_2]+a[1]+ ')'+b[i_3]+a[2])
                        for i in range(24):
                            if(eval(c[i]) == 24):
                                flag = 1 #若有等于24的,flag = 1
                                
                                break
        if(flag == 1):
            print('true')
        else:
            print('false')
    except:
        break
华为机试题解(prod.by kedao) 文章被收录于专栏

华为实习机试题解

全部评论

相关推荐

迷茫的大四🐶:价格这么低都能满了?
点赞 评论 收藏
分享
安静的鲸鱼offer...:神仙级别hr,可遇不可求,甚至他可能也是突然有感而发。只能说遇上是件幸事。
秋招开始捡漏了吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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