HDU1427 速算24点
解题思路:
枚举所有可能的情况。
首先对四个数字进行全排列,对于每一种排列,通过dfs模拟出带不同括号的情况,对于每一种情况,再进行加减乘除的运算,看有没有一种情况能算出24的结果。
这里还有2个问题:
1 要对输入进行转换,尤其是A、10、J、Q、K这样的特殊牌。
2 在进行除法运算前要进行判断,首先除数不能为0,不然程序会崩溃,然后要能整除。
代码:
1 #include <cstdio> 2 #include <iostream> 3 #include <string.h> 4 #include <algorithm> 5 using namespace std; 6 int k; 7 int card[4]; 8 char temp[4]; 9 //处理几张特殊的牌 10 void tra(int i) 11 { 12 if(strcmp(temp, "A")==0) card[i]=1; 13 else if(strcmp(temp, "10")==0) card[i]=10; 14 else if(strcmp(temp, "J")==0) card[i]=11; 15 else if(strcmp(temp, "Q")==0) card[i]=12; 16 else if(strcmp(temp, "K")==0) card[i]=13; 17 else card[i] = (int)(temp[0]-48); 18 } 19 int judge24(int n) 20 { 21 return (n == 24); 22 } 23 void dfs(int sum,int cur, int m) 24 { 25 if(k == 1) return; 26 if(m == 3) 27 { 28 if(judge24(sum+cur) || judge24(sum-cur) || judge24(sum*cur)) 29 { 30 //printf("%d %d\n",sum,cur); 31 k = 1; 32 } 33 else if(cur!=0 && sum%cur==0 && judge24((sum/cur))) 34 {//注意除数不能为0且必须能整除 35 //printf("%d %d\n",sum,cur); 36 k=1; 37 } 38 return; 39 } 40 //通过这种搜索虚拟不同的括号从而改变运算顺序 41 dfs(sum+cur, card[m+1], m+1); 42 dfs(sum-cur, card[m+1], m+1); 43 dfs(sum*cur, card[m+1], m+1); 44 if(cur!=0 && sum%cur==0) dfs(sum/cur, card[m+1], m+1); 45 46 dfs(sum, cur+card[m+1], m+1); 47 dfs(sum, cur-card[m+1], m+1); 48 dfs(sum, cur*card[m+1], m+1); 49 if(card[m+1]!=0 && cur%card[m+1]==0) dfs(sum, cur/card[m+1], m+1); 50 } 51 int main(void) 52 { 53 //freopen("1427.in", "r", stdin); 54 while(scanf("%s",temp) != EOF) 55 { 56 k = 0; 57 tra(0); 58 for(int i=1; i<4; i++) 59 { 60 scanf("%s",temp); 61 tra(i); //用于字符转化为数字 62 } 63 sort(card, card+4);//要先排序才能进行全排列 64 do 65 { 66 dfs(card[0], card[1], 1); //对于每一个排列,进行dfs来构造不同的运算顺序 67 }while(next_permutation(card, card+4) && k==0);//通过全排列构造不同的算式 68 if(k == 0) printf("No\n"); 69 else printf("Yes\n"); 70 } 71 return 0; 72 }//2015-07-25
转载于:https://www.cnblogs.com/mycd/p/5657145.html
HDU1427 速算24点相关推荐
- HDU1427 速算24点【DFS】
速算24点 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- 速算C语言程序设计,C语言程序设计课程设计-速算24.doc
该设计论文已经通过各大高校老师审核认可并通过答辩,准确完整无误.欢迎大家下载学习交流.如有疑问可随时联系店主,竭诚为您解答!! 应用技术学院 课 程 设 计 报 告 课程名称 C语言课程设计 课题名称 ...
- 24速算c语言实训报告ppt,C语言课程设计(速算24).doc
<> 课程设计报告 速算24专业:计算机科学与技术班级:姓名:指导教师:成绩: 计算机与信息工程系 二0一四年二月二十日 目录 1.该系统的功能描述.................... ...
- HDU 1427 速算24点(dfs)
Description 速算24点相信绝大多数人都玩过.就是随机给你四张牌,包括A(1),2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13).要求只用'+','-','*','/ ...
- Python写个小游戏:速算24点(上)
文章目录 前言 速算24点 1. 玩法简介 2. 游戏流程 3. 搭建游戏界面 1). 基本界面 2). 洗牌.发牌 洗牌 发牌 3). 计时器 4). 玩家输入公式(答案) StringVar类 按 ...
- c语言速算24课程设计,C语言速算24数据结构课程设计.docx
课程设计 ( 论文 ) 题 目 名 称 速算 24 课 程 名 称 数据结构课程设计 学 生 姓 名 王浩明 学 号 0941301253 系 .专 业 信息工程系.信息类 指 导 教 师 谢兵 20 ...
- Python写个小游戏:速算24点(下)
文章目录 前言 速算24点 1. 玩法简介 2. 游戏流程 3. 剩下的部分 1). 关卡 / 分数信息 IntVar类 2). 提示按钮 图片 按钮 3). 重新发牌 4. 让电脑计算24点 1). ...
- 速算C语言程序设计,C语言速算24数据结构课程设计最终版(备份存档)
<C语言速算24数据结构课程设计.doc>由会员分享,可免费在线阅读全文,更多与<C语言速算24数据结构课程设计(最终版)>相关文档资源请在帮帮文库(www.woc88.com ...
- HDU 1427 速算24点 (深搜)
题目链接 Problem Description 速算24点相信绝大多数人都玩过.就是随机给你四张牌,包括A(1),2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13).要求只用' ...
- 24速算c语言实训报告ppt,C语言速算24数据结构课程设计.doc
C语言速算24数据结构课程设计.doc 课程设计论文题 目 名 称 速算 24 课 程 名 称 数据结构课程设计 学 生 姓 名 王浩明 学 号 0941301253 系 .专 业 信息工程系.信息类 ...
最新文章
- 使用WinSCP在WIndows与树莓派之间传递文件
- XShell+Xmanager实现在XShell中显示远程服务器的图形界面
- python web自动化_Selenium+Python Web自动化
- java创建oracle序列_java学习:Hibernate学习-用oracle sequence序列生成ID的配置示例
- matlab产生一组均为一的矩阵,在matlab中如何从一组数中得到随机数组成一个n*n的矩阵...
- oracle sql为null值,在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办
- python数据类型有哪些、分别有什么用途_python中的数据类型有哪些
- PHP中几种b2b,用php开发 b2b 用什么架构?
- java中final语句_Java中使用非final变量的不可访问语句
- Data truncation: Out of range value for column ‘quanity‘ at row 问题解决方案
- macos 设置内外网同时访问
- WARNING: Too many active WebGL contexts. Oldest context will be lost.
- 高等数学:第七章 空间解析几何(1)空间解析几何与向量代数
- 按计算机应用领域分类,按计算机用途分类
- TreeUtil(树形结构转换)
- javascript学习-SVG
- 【畅捷通T+】登录提示 列“MarketingCloudUserId”不属于表 。
- 想和大家讲述一个普通人的生活:现在差劲不可怕,只要最后是好的就行
- Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC 8.6 - 图生成 小世界模型
- 如何用ADB命令删除Android中的系统应用
热门文章
- java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory
- 安装百度库,C调用Python出错,卸载、再重装消失
- python3多进程执行循环_Python3 并发编程之多进程(一)
- mysql 抓包工具_好用的MySQL抓包工具:sniffer-agent
- 网页英文 错位_网页错位原因解决方法
- python计算无穷级数求和,无穷级数求和的积分审敛法
- java计算两点距离_Java 使用经度计算两点之间的距离?
- 亲爱的,别把上帝缩小了 ---- 读书笔记4
- Koa2 之文件上传下载
- 大数据踩坑之旅: 从数据可视化到商业智能