题解 | #24点游戏算法#

24点游戏算法

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

用循环,没有用递归。

def gen(a):
    b = len(a)
    for i in range(0, b):
        c = a[:]
        num1 = c.pop(i)
        for j in range(0, b - 1):
            d = c[:]
            num2 = d.pop(j)
            yield d + [num1 + num2]
            yield d + [num1 - num2]
            yield d + [num1 * num2]
            if not (abs(num2) < 1e-6):
                yield d + [num1 / num2]
'''
b = gen([1,2,3])
for i in b:
    print(i)
'''

o = input()
a = list(map(int, o.split()))

def check(a):
    gen_list = [gen(a)]

    while len(gen_list):
        try:
            res = next(gen_list[-1])
            if len(res) == 1:
                if abs(res[0] - 24) < 1e-6:
                    return 'true'
                    break
            else:
                gen_list.append(gen(res))
        except StopIteration:
            gen_list.pop(-1)
    
    return 'false'

print(check(a))

全部评论

相关推荐

迷茫的大四🐶:自信一点,我认为你可以拿到50k,低于50k完全配不上你的能力,兄弟,不要被他们骗了,你可以的
点赞 评论 收藏
分享
抱抱碍事梨a:三点建议,第一点是建议再做一个项目,把自我介绍部分顶了,第二点是中南大学加黑加粗,第三点是建议加v详细交流
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务