算法训练 24点游戏
算法训练 24点游戏
- 1.问题描述
- 2.输入格式
- 3.输出格式
- 4.分析
- 5.代码
第一版:蓝桥杯版(搜索算法)
后面会出力扣版的24点游戏的代码分析
1.问题描述
- 问题:
24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13),你可以利用数学中的加、减、乘、除以及括号想办法得到24。
- 举例:
((A*K)-J)Q等价于((113)-11)*12=24
加减乘不用多说了,但除法必须满足能整除才能除!这样有一些是得不到24点的,所以这里只要求求出不超过24的最大值。
2.输入格式
输入第一行N(1<=N<=5)表示有N组测试数据。每组测试数据输入4行,每行一个整数(1到13)表示牌值。
3.输出格式
每组测试数据输出一个整数,表示所能得到的最大的不超过24的值。
4.分析
2022/4/15 补
5.代码
import java.util.Scanner;public class Main {static int n,vis[],arr[],max,pos;public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextInt();int[][] num = new int[n][4];vis = new int[4];arr = new int[4];for(int i = 0;i < n ;i++)for(int j = 0;j < 4;j++)num[i][j] = sc.nextInt();for(int i = 0;i < n;i++){max = 0;Dfs(1,num[i]);System.out.println(max);}}static int VF(int a,int b,int h){switch(h){case 1:return a+b;case 2:return a-b;case 3:return a*b;}if(b == 0) return 1000;if(a % b != 0) return 1000;return a/b;}static void Dfs(int step,int[] num) {for(int i = 0;i < 4;i++){if(vis[i] == 0){vis[i] = 1;arr[pos++] = num[i];Dfs(step+1,num);vis[i] = 0;arr[--pos] = 0;}}if(step > 4){for(int i = 1;i <= 4; i++)for(int j = 1;j <= 4;j++)for(int k = 1;k <= 4;k++){int tp1,tp2,tp3;tp1 = VF(arr[0],arr[1],i);tp2 = VF(tp1,arr[2],j);tp3 = VF(tp2,arr[3],k);if(tp3 <= 24) max = Math.max(max, tp3);tp1 = VF(arr[1],arr[2],j);tp2 = VF(arr[0],tp1,i);tp3 = VF(tp2,arr[3],k);if(tp3 <= 24) max = Math.max(max, tp3);tp1 = VF(arr[1],arr[2],j);tp2 = VF(tp1,arr[3],k);tp3 = VF(arr[0],tp2,i);if(tp3 <= 24) max = Math.max(max, tp3);tp1 = VF(arr[0],arr[1],i);tp2 = VF(arr[2],arr[3],k);tp3 = VF(tp1,tp2,j);if(tp3 <= 24) max = Math.max(max, tp3);tp1 = VF(arr[2],arr[3],k);tp2 = VF(arr[1],tp1,j);tp3 = VF(arr[0],tp2,i);if(tp3 <= 24) max = Math.max(max, tp3);}}}
}
算法训练 24点游戏相关推荐
- 蓝桥杯算法训练-24点(Python)
问题描述 24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13),你可以利用数学中的加.减.乘.除以及括号想办法得到24, ...
- 蓝桥杯 试题 算法训练 24点 C++ 详解
问题描述: 24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13),你可以利用数学中的加.减.乘.除以及括号想办法得到24 ...
- ACM. HJ67 24点游戏算法 679. 24 点游戏
HJ67 24点游戏算法 ●● 679. 24点游戏 ●●● 描述 给定一个长度为4的整数数组 cards .你有 4 张卡片,每张卡片上都包含一个范围在 [1,9] 的数字.您应该使用运算符 ['+ ...
- 试题 算法训练 24点
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13 ...
- 试题 算法训练 24点 蓝桥杯 Java
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13 ...
- 每日算法 - 列出24点游戏的所有解法
目录 题目 代码 相关题目 题目 输入四张扑克牌,输出所有可能的形成24点的表达式. 代码 import java.util.HashMap; import java.util.Map; import ...
- 传球游戏c语言,[蓝桥杯][算法训练VIP]传球游戏-题解(Java代码)
解题思路: 注意事项: 参考代码: import java.util.Scanner; public class Main { static int n; public static void mai ...
- 蓝桥杯算法训练 数字游戏 组合数和暴力两种解法
试题 算法训练 数字游戏 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个1-N的排列a[i],每次将相邻两个数相加,得到新序列,再对新序列重复这样的操作,显然每次得到的序列 ...
- python编写24点游戏
1.题目要求 24点游戏是经典的纸牌益智游戏. 常见游戏规则: 从扑克中每次取出4张牌.使用加减乘除,第一个能得出24者为赢.(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决2 ...
最新文章
- C语言经典例99-文件内容合并和排序
- svn导出java项目_【SVN】导出项目后报错汇总
- 使用tcpdump,adb进行手机抓包
- java 怎么从性能上优化代码_月薪上万做好这一步:程序员职场中必须掌握的的Java代码性能优化技巧...
- HDU 2045 不容易系列之(3)―― LELE的RPG难题(递推)
- 在linux环境中配置tomcat
- DCMTK3.6.0 安装失败的说明
- ASP.NET使用UpdatePanel实现AJAX
- c++读取文本文件(txt)代码
- 国科大学习资料--机器人学导论(张正涛)--2014年期末考试试卷(含答案)
- 用java编写某年某月的日历_Java-查询某年某月一个月的数据,以日历的形式展示。...
- 我的HTC G16 CHACHA A810e版手机如何解锁和一键root的
- 常用数学希腊符号读法
- premiere调色预设怎么用
- CJT长江连接器公司的A2541系列线对板连接器PCB封装库
- Python练习题答案: IRR计算 - 盈利能力的评价【难度:2级】--景越Python编程实例训练营,1000道上机题等你来挑战
- 安全检查如何确保建筑幕墙施工的安全管理呢
- leetcode 1184 看起来很吓人,其实很简单的题目
- MP40N120-ASEMI场效应管MP40N120
- 奶茶封口膜-市场现状及未来发展趋势