问题描述

  24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13),你可以利用数学中的加、减、乘、除以及括号想办法得到24,例如:
  ((A*K)-J)*Q等价于((1*13)-11)*12=24
  加减乘不用多说了,但除法必须满足能整除才能除!这样有一些是得不到24点的,所以这里只要求求出不超过24的最大值。

输入格式

  输入第一行N(1<=N<=5)表示有N组测试数据。每组测试数据输入4行,每行一个整数(1到13)表示牌值。

输出格式

  每组测试数据输出一个整数,表示所能得到的最大的不超过24的值。

样例输入

3
3
3
3
3
1
1
1
1
12
5
13
1

样例输出

24
4
21


我的思路:

这道题考察深度优先搜索算法,回溯,递归。设有四个数字a,b,c,d,四个数字中任意两个数(比如a和b)无非进行加减乘除中的一种操作(比如a+b),这时就剩下三个数字(a+b),c,d 。剩下的三个数字中任意两个数字也重复上一步操作(比如(a+b)*c),就剩下两个数字(a+b)*c,d 。重复这样的操作,直到只剩一个数字时结束,再判断该数字与24的关系。

实际代码中,将四个数字放入列表,让列表中任意两个数字都进行加减乘除操作,并在每次操作后都将结果加入列表(记得将进行操作的两个数字删除),重复操作,直到列表长度为1。


100分代码如下 

# 2022.3.18
# 蓝桥杯算法训练-24点
# 知识点:深度优先搜索算法
# 我的思路:在一个由4个数字组成的列表中,让每一个数字都与其他三个数字进行
# 加减乘除,并将计算得到的结果加入进列表中,同时在列表中删除进行计算的两个数字,
# 通过递归进行,递归出口为列表长度为1的时候。n = int(input())
nums = [[] for i in range(n)]
for i in range(n*4):nums[i//4].append(int(input()))
def dfs(arr):#print(arr)global res, flag, sto # res为计算结果;flag标记计算结果是否为24;sto用于储存小于24的计算结果if flag == 1:       # flag==1说明找到最终结果了returnif len(arr) == 1:   # 递归出口res = arr[0]if res == 24:flag = 1sto = [24] # 当计算结果为24时,直接令sto=[24]returnelif res > 24:  # 计算结果大于24的不要returnelse:sto.add(res) # 计算结果小于24的加入集合中,最后取集合最大值得到最终结果returnfor i in range(len(arr)):a = arr[i]arr2 = arr.copy() # 作用与回溯相同,用了arr2就不需要回溯了arr2.pop(i)for j in range(len(arr2)):b = arr2[j]c = a + b         # 加法,把a与b的和加入列表中,同时删除a与b。arr2.pop(j)arr2.insert(j, c)dfs(arr2)arr2.pop(j)       # 回溯arr2.insert(j, b) # 回溯d = a - b        # 减法arr2.pop(j)arr2.insert(j, d)dfs(arr2)arr2.pop(j)       # 回溯arr2.insert(j, b) # 回溯e = a * b         # 乘法arr2.pop(j)arr2.insert(j, e)dfs(arr2)arr2.pop(j)       # 回溯arr2.insert(j, b) # 回溯if b != 0:if a % b == 0:   f = a // b        # 除法arr2.pop(j)arr2.insert(j, f)dfs(arr2)arr2.pop(j)       # 回溯arr2.insert(j, b) # 回溯for arr in nums:sto = set([])flag = 0res = 0dfs(arr)end = max(sto)print(end)

提交结果

蓝桥杯算法训练-24点(Python)相关推荐

  1. 蓝桥杯算法训练cowboys-dp-递归-python题解

    cowboys(dp+递归) 问题描述 一个间不容发的时刻:n个牛仔站立于一个环中,并且每个牛仔都用左轮手枪指着他旁边的人!每个牛仔指着他顺时针或者逆时针方向上的相邻的人.正如很多西部片那样,在这一刻 ...

  2. 蓝桥杯 算法训练 幸运的店家

    蓝桥杯 算法训练 幸运的店家 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 炫炫开了一家商店,卖的货只有一个,XXX,XXX卖N元钱.有趣的是,世界上只有面值为3的幂的纸 ...

  3. 蓝桥杯 算法训练 Beaver's Calculator

    蓝桥杯 算法训练 Beaver's Calculator 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator ...

  4. 蓝桥杯 算法训练 印章

    蓝桥杯 算法训练 印章 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入输出: 一行两个正整数n和m 一个实数P表示答案,保留4位小数. 样例: 2 3 ...

  5. 蓝桥杯——算法训练——数字三角形

    蓝桥杯--算法训练--数字三角形 这道题不难,但是比较典型,可以作为动态规划(dp)的入门篇,属于线性dp(LIS,LCS和数字三角形都是此类题型). ------------------------ ...

  6. 蓝桥杯算法训练-强力党逗志芃

    持续更新蓝桥杯算法训练题解,有兴趣可以关注一波呀 题目 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能.现在我们可以了解到,每个技能都有一个前提技能,只有学完了前提技能才能学习当前 ...

  7. 蓝桥杯 算法训练 逗志芃的危机

    蓝桥杯 算法训练 逗志芃的危机 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃又一次面临了危机.逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了.现在她妹子要和 ...

  8. 蓝桥杯算法训练-过河马

    蓝桥杯算法训练题解有兴趣的可以支持下. 题目 问题描述 在那个过河卒逃过了马的控制以超级超级多的走法走到了终点之后,这匹马表示它不开心了-- 于是,终于有一天,它也过河了! 由于过河马积累了许多的怨念 ...

  9. 蓝桥杯——算法训练——进击的青蛙

    问题描述 青蛙X正准备跳过一座桥,这座桥被划分为N段,记青蛙所在的起始点为0,桥的末端为N.桥上的一些点有一些石子,这些点是无法跳上去的.青蛙每次跳跃能向前跳跃+1,+2,+3段,现在请你算出跳到末端 ...

最新文章

  1. react中使用构建缓存_如何在React中构建热图
  2. c++实现平面上的形状编辑
  3. 计算机网络·“存储-转发”式分组交换网
  4. Cannot add product to Opportunity in Fiori - RFC error
  5. yum php fpm5.6,CentOS 7 yum 安装php5.6
  6. ci框架 mysql 超时时间_mysql 字符集和校验规则( CHARSET amp; COLLATE)
  7. C语言运算符的优先级及结合性
  8. RAC 安装完成后 节点间通信不依赖于SSH
  9. Ubuntu下搭建git服务器步骤
  10. 计算机视觉基本研究方向
  11. 网易云服务器上传文件,网易云音乐怎么把音乐上传到云盘 网易云音乐把音乐上传到云盘的步骤方法...
  12. vue uniapp如何实现横向滚动周历,横向滚动一周日历
  13. 2015腾讯校园招聘软件测试部分笔试题
  14. 阿里全国脱贫攻坚先进-万祥军:谋定中国农民丰收节交易会
  15. Git HEAD detached from origin(冲突解决后无法正常push) 问题的解决方案
  16. YOLOV5dataset.py代码注释与解析
  17. 计算机二级模板文档,江苏省计算机二级
  18. FileNotFoundError: [Errno 2] No such file or directory: ‘pretrained/gated-conv.pth‘
  19. 上半年最中意的 GitHub 更新「GitHub 热点速览 v.22.21」
  20. 春节红包活动如何应对10亿级流量?看大佬复盘总结

热门文章

  1. 机器人视觉系统的构成
  2. 全景图矫正 matlab,全景图的后期水平矫正的三种方法
  3. 神操作 用 Python 操作 xmind 绘制思维导图
  4. centos8.2+Tesla T4搭建深度学习运行环境
  5. 【计算机网络】已知若干个网络,如何计算汇聚成超网后的地址?
  6. 协方差和相关系数的关系
  7. 网易云项目(Vue)
  8. deepin 下 WPS for linux字体显示问题[已解决]
  9. 15、Access数据库偏移注入
  10. nginxpcmobile