美文网首页
HJ67 24点游戏算法

HJ67 24点游戏算法

作者: Ribosome_He | 来源:发表于2021-10-07 00:55 被阅读0次

    描述
    问题描述:给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利
    输入:
    4个1-10的数字。[数字允许重复,但每个数字仅允许使用一次,测试用例保证无异常数字。
    输出:

    true or false

    本题含有多组样例输入。
    输入描述:
    输入4个int整数

    输出描述:
    返回能否得到24点,能输出true,不能输出false

    #dfs深度优先搜索
    #递归到最底层,再从相邻节点就递归到最底层
    
    def jisuan(arr,i):
        if i < 0 : #i<0说明四张牌合起来比24点大
            return False
        elif len(arr) == 1: #剩一个数时,若相等即可拼成24点
            return arr[0] == i
        else:
            for j in range(len(arr)):
                a = arr[:j] + arr[j+1:] #取出一个数,其他三个数继续做计算
                temp = arr[j]
                if jisuan(a, i-temp) or jisuan(a, i+temp) or jisuan(a, i*temp) or jisuan(a, i/temp): #一个递归完再递归第二个
                    return True #有其中一个递归返回true就是找到答案
            return False
        
    while True:
        try:
            l = list(map(int,input().split()))
            if jisuan(l, 24):
                print('true')
            else:
                print('false')
        except:
            break
    

    相关文章

      网友评论

          本文标题:HJ67 24点游戏算法

          本文链接:https://www.haomeiwen.com/subject/kosanltx.html