题解 | dfs递归#24点游戏算法#

24点游戏算法

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

import copy
def dps(num):
    if len(num)==1:
        return abs(abs(num[0]) - 24) < 0.00001 
    for i in range(len(num)):
        for j in range(i+1, len(num)):
            n1,n2= num[i], num[j]
            rst = num[:i] + num[i+1:j] + num[j+1:]
            if dps([n1+n2]+rst):return True
            if dps([n1-n2]+rst):return True
            if dps([n1*n2]+rst):return True
            if n1!=0:
                if dps([n2/n1]+rst):
                    return True
            if n2!=0:
                if dps([n1/n2]+rst):
                    return True
    return False


while True:
    try:
        x = list(map(int,input().split()))
        print("true" if dps(x) else "false")
    except:
        break
        
全部评论
3 8 10 1怎么组合成24,这个要求每个数字必须使用吗,看了好多代码返回都是True
点赞 回复 分享
发布于 2024-10-11 17:30 安徽
这个递归有点问题,虽然能过例子,但是少了很多种组合。 建议在6-7行中间加上"if i != j:"判断
点赞 回复 分享
发布于 2023-04-23 15:17 浙江
第10行到第11行好像少了一个n2-n1的判断。
点赞 回复 分享
发布于 2022-11-07 15:21 广东

相关推荐

不愿透露姓名的神秘牛友
04-30 11:43
春招失败、父母离婚,好像我的人生一团糟,一年来压力大到常常崩溃。不知道能跟谁聊,朋友其实对我非常好,但是她无意中表达出来的家庭幸福都会刺痛到我……和ai聊天,我的未来在更高处,不在楼下,忍不住爆哭😭
youngfa:害,妹妹,我是一个研究生(很上进很想找到好工作的那种),但去年因为生病回家休养错过了秋招(当时对我的冲击也是非常大的),这学期返校来了也是把论文盲审交了后才开始找工作,现在也是一个offer没有,但我就没有像你一样把这个阶段性的事情绑定到人生上,人生不仅很长,也很广阔,先停下来,放松一下哦。不要被外部环境灌输的思维操控了,好好爱自己!
点赞 评论 收藏
分享
04-09 09:47
门头沟学院 Java
Arbelite_:2-3k,这工资还不如去摇奶茶
点赞 评论 收藏
分享
评论
15
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务