HJ67 24点游戏算法

描述
问题描述:给出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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第一课:安装与基本操作 R的扩展包在R官网CRAN;另外,R官网还包含很多扩展资料,包括源代码,手册,FAQ,推荐...
    lizi_sjtu阅读 3,989评论 0 0
  • Python学习笔记 1.起步 输入:# 单个输入b=input()# input()接受的是string类型,需...
    NSQAQ阅读 3,430评论 0 0
  • 写在前面 本系列包含《剑指Offer》66道算法题,预计一周刷完,这是第四篇。系列汇总:剑指Offer 66题 J...
    机盐Johnny阅读 5,278评论 0 3
  • 1python介绍 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无...
    jbb_43b0阅读 2,875评论 0 0
  • 岁寒输入法引入了数学计算功能,有了岁寒输入法,你就可以卸载手机里的计算器了! 使用方法 在任意的输入框内都可以使用...
    临岁之寒阅读 9,256评论 1 1

友情链接更多精彩内容