Python蓝桥杯ALGO-995 24点

news/2025/1/31 5:36:47/

题目描述

问题描述
  24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13),你可以利用数学中的加、减、乘、除以及括号想办法得到24,例如:
  ((A*K)-J)Q等价于((113)-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

思路分析

这个题做的不舒服,就是暴力破解,有更好的方法欢迎大佬指教哦~~~

代码如下

写的很冗余感觉,,,

op_list=['+','-','*','/']
def caculate1(op_list,num_list):tmpstr=""res=num_list[0]for i in range(3):tmpstr=str(res)+op_list[i]+str(num_list[i+1])res=eval(tmpstr)#判断是否是小数if int(res)-res==0:return int(res)return -1
def caculate2(op_list,num_list):tmpstr=""tmpstr1=eval(str(num_list[0])+op_list[0]+str(num_list[1]))tmpstr2=eval(str(num_list[2])+op_list[2]+str(num_list[3]))#判断除数是否为0if tmpstr2==0 and op_list[1]=='/':return -1res=eval(str(tmpstr1)+op_list[1]+str(tmpstr2))#判断是否是小数if int(res)-res==0:return int(res)return -1
def f(nums):max_value=-1#三层循环暴力破解 三种运算符的所有可能for i in range(4):for j in range(4):for k in range(4):tmp_op=[op_list[i],op_list[j],op_list[k]]#括号优先级 四个数字三个运算符就两种优先级#1.从左至右res=caculate1(tmp_op,nums)#2.先算两边在算中间res1=caculate2(tmp_op,nums)
#                 print(op_list[i],op_list[j],op_list[k],res,max_value,res<=24,res>max_value,int(res)-res)#这里代码写的有点冗余懒得改了if res<=24 and res>max_value:max_value=resif res1<=24 and res1>max_value:max_value=res1return max_value
def dfs(N):#dfs暴力破解 四个数字的排列组合global numsglobal max_valif N==3:
#         print(nums)max_val=max(max_val,f(nums))for i in range(N,4):nums[i],nums[N]=nums[N],nums[i]dfs(N+1)nums[i],nums[N]=nums[N],nums[i]N=int(input())
tmp=[]
num=[]
for j in range(N):for i in range(4):e=int(input())tmp.append(e)num.append(tmp)tmp=[]
max_val=-1
for n in num:nums=ndfs(0)print(max_val)max_val=-1

http://www.ppmy.cn/news/666505.html

相关文章

NANK南卡护眼台灯Pro全面评测:旗舰级护眼天花板!

随着社会的快速发展&#xff0c;现在越来越多的家庭开始使用台灯这一家居产品&#xff0c;这也催生了护眼台灯行业产品的快速升级&#xff0c;不断加大护眼质量。这不&#xff0c;南卡&#xff08;NANK&#xff09;家发布了新一代旗舰级护眼灯——南卡护眼台灯Pro&#xff0c;主…

蓝桥杯算法:斐波那契求Fn除以10007的余数

时间限制: 1.0s 内存限制: 512.0MB 【问题描述】 Fibonacci数列的递推公式为&#xff1a;FnFn-1Fn-2&#xff0c;其中F1F21。 当n比较大时&#xff0c;Fn也非常大&#xff0c;现在我们想知道&#xff0c;Fn除以10007的余数是多少。 <此题禁止使用数组容器等数据结构> 【…

素数环-蓝桥杯

题目描述 有一个整数 n&#xff0c;把从 1 到 n 的数字无重复的排列成环&#xff0c;且使每相邻的两个数&#xff08;包括首和尾&#xff09;的和都为素数&#xff0c;称为素数环。为了简便起见&#xff0c;我们规定每个素数环都从 1 开始。例如&#xff0c;6 的一个素数环&am…

【蓝桥杯】新型斐波那契数列

蓝桥杯 新型斐波那契数列 问题描述 新型斐波那契数列的第一、二、三项都为1&#xff0c;从第四项起每一项等于前面三项之和&#xff0c;求此数列第n项模m的余数。 输入格式 输入一行为两个整数n、m&#xff0c;用空格隔开。 输出格式 输出一行为新型斐波那契数列第n项模m的余数…

蓝桥杯——ALGO995——24点

通过万岁&#xff01;&#xff01;&#xff01; 题目&#xff1a;就是给你四张扑克牌&#xff0c;然后尽可能的通过加减乘除和括号得到小于等于24的最大值&#xff0c;最大就是24。注意&#xff0c;除法的时候需要判断是不是整除。思路&#xff1a;猛一看&#xff0c;感觉可能…

使用7号电池的科学计算机,新奇:可以用USB充电的5号、7号电池

在大家的日常生活中&#xff0c;电池绝对是的离不开的物件。特别是AA五号电池和AAA七号电池&#xff0c;用途更加广泛&#xff0c;比如在很多家电的遥控器中、玩具、数码产品中&#xff0c;都可以找到他们的身影。为了使用方便&#xff0c;有不少人都会选择使用充电电池。但是充…

Acwing.838.堆排序

基础堆操作 题目 输入一个长度为n的整数数列&#xff0c;从小到大输出前m小的数。 输入格式 第一行包含整数n和m。 第二行包含n个整数&#xff0c;表示整数数列。 输出格式 共—行&#xff0c;包含m个整数&#xff0c;表示整数数列中前m小的数。 数据范围 1 ≤m ≤n ≤…

南孚电池持续领先同行的秘诀——集团数字化转型

注&#xff1a;本文为帆软2021数据生产力大赛获奖案例&#xff0c;未经授权禁止转载。 1 公司简介 福建南平南孚电池有限公司创立于1988年&#xff0c;系国家520户重点企业&#xff0c;国家高新技术企业&#xff0c;外经贸部重点扶持的出口企业&#xff0c;中国电池行业龙头…