题解 | #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))

全部评论

相关推荐

SHC2:关键问题是你这三段实习是三个不同的岗位…你这样子秋招就是只有一段实习的本科生..
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务