Python蓝桥杯ALGO-995 24点

android计算24小游戏 android平台下24小游戏。游戏分为两种模式,定时模式,定量模式 !本游戏代码实现方式比较简单,仅供初学者参考! 立即下载

题目描述

问题描述
  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]))
    #判断除数是否为0
    if tmpstr2==0 and op_list[1]=='/':
        return -1
    res=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=res
                if res1<=24 and res1>max_value:
                    max_value=res1
    return max_value
def dfs(N):#dfs暴力破解 四个数字的排列组合
    global nums
    global max_val
    if 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=n
    dfs(0)
    print(max_val)
    max_val=-1
        
这个是一个24游戏程序 基于MFC的24小游戏,可供大家下载来玩玩看 立即下载

相关推荐

py-algo:用python编写的算法集合

python算法的集合 请注意,这仅出于教育目的,因此可能存在一些问题。 python中涵盖的算法: 二进制搜索 基本动态编程(背包和硬币找零) 图算法 拓扑排序 循环检测 连接的组件 最小生成树(Kruska和Prim) Dijsktra 联合发现 数论 埃及GCD 中国余数 快速动力 筛 细分树(非正规且具有延迟传播)

纸牌24Python 程序实现

最近刚刚接触python,又恰巧和室友玩纸牌,想到小时候玩的24游戏,所以当做练习,写了一段代码。 参考了一位叫GreatAnt网友的程序,但是他实现的只是一种计算结果的输出,为了看到所以计算可能的输出,我编写了下面一段代码,欢迎广大网友来此留言交流。

nimo97 3585

算法训练 24游戏

算法训练 24游戏

m0_53270352的博客 4169

24游戏 python_Python破解24游戏,从此打扑克就没输过

文源网络,仅供学习之用,如有侵权请联系删除。24游戏对于任意给定的四张扑克牌,计算是否有赢得24游戏的方法(即使用加、减、乘、除四则运算凑成24的方法);如果有的话,列出所有可能的方法。在大小王以外的52张牌中,任意抽取其中4张牌。如果通过加、减、乘、除四则运算(可加括号)的方法,将抽到的4张牌算成24,则为胜利;每张牌都必须使用,且只能使用一次。第一种解法依据游戏规则,我们可以想到如下解决思...

weixin_39802784的博客 321

【2011.10.29模拟】24游戏题解

题目描述 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

zhy_Learn的博客 2760

dfs:24

题目传送门xxcc题目传送门xxcc题目传送门xxcc 题目 传说,小圆搜题上有一个24排位赛…… 标程 #include &lt;bits/stdc++.h&gt; const double EPS = 1e-6; struct Ans{ double x, y; int opt; double res; } ans[3]; doubl...

lzx_2014的博客 419

第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-995 24

第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-995 24 前言 关于数学的疑问 算法训练 24 C语言 C++语言 Java语言 Python语言 总结 第六届——第十三届省赛题解 第六届——第十二届国赛题解

红目香薰 407

蓝桥杯 试题 算法训练 24 C++ 详解

问题描述:   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行,.

Lyz_ID的博客 6038

蓝桥杯算法训练 24 C++实现

这样有一些是得不到24的,所以这里只要求求出不超过24的最大值。输入第一行N(1

m0_74362844的博客 666

蓝桥杯算法训练-24Python

这道题考察深度优先搜索算法,回溯,递归。设有四个数字a,b,c,d,四个数字中任意两个数(比如a和b)无非进行加减乘除中的一种操作(比如a+b),这时就剩下三个数字(a+b),c,d 。剩下的三个数字中任意两个数字也重复上一步操作(比如(a+b)*c),就剩下两个数字(a+b)*c,d 。重复这样的操作,直到只剩一个数字时结束,再判断该数字与24的关系。 实际代码中,将四个数字放入列表,让列表中任意两个数字都进行加减乘除操作,并在每次操作后都将结果加入列表(记得将进行操作的两个数字删除)

one_rookie的博客 5241

蓝桥杯 算法训练 24

蓝桥杯 算法训练 暴力递归

weixin_45728231的博客 2993

蓝桥杯-24游戏

蓝桥杯记录

m0_66113251的博客 756

试题 算法训练 24

这样有一些是得不到24的,所以这里只要求求出不超过24的最大值。输入第一行N(1

m0_65406049的博客 380

24

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

越努力,越幸运!!! 1546

羊年24游戏趣味挑战赛(半决赛)

羊年24游戏趣味挑战赛(半决赛)作者 ococo 2003/1/30 http://ococo.vip.myrice.com问题(以下每个问题都有两个解):1 4 5 13   1 4 5 6    1 4 5 9    1 4 7 9    1 5 6 11   1 5 7 9    1 5 9 13   1 6 7 9    1 7 10 13  1 7 9 10   1 7 9 1

Java我的最爱 2747
上一篇: Python蓝桥杯ALGO-996 车的放置
下一篇: Python蓝桥杯ALGO-994 最大分解
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值