Description
速算24点相信绝大多数人都玩过。就是随机给你四张牌,包括A(1),2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13)。要求只用’+’,’-‘,’*’,’/’运算符以及括号改变运算顺序,使得最终运算结果为24(每个数必须且仅能用一次)。游戏很简单,但遇到无解的情况往往让人很郁闷。你的任务就是针对每一组随机产生的四张牌,判断是否有解。我们另外规定,整个计算过程中都不能出现小数。
Input
每组输入数据占一行,给定四张牌。
Output
每一组输入数据对应一行输出。如果有解则输出”Yes”,无解则输出”No”。
Sample Input
A 2 3 6
3 3 8 8
Sample Output
Yes
No
Solution
因为不考虑运算顺序所以直接暴搜,每次选两个数进行加减乘除操作,注意除法的时候要判除数是否为0以及是否可以整除
Code

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<ctime>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
#define maxn 5
#define eps 1e-8
int a[maxn];
int flag,vis[maxn];
void dfs(int num)//num表示当前正在进行第几步操作
{if(flag)return ;if(num==4){for(int i=1;i<=4;i++)if(!vis[i]&&a[i]==24)flag=1;return ;} //选两个数a[i],a[j]进行操作,结果放到a[i]中 for(int i=1;i<=4;i++)if(!vis[i]) for(int j=i+1;j<=4;j++)if(!vis[j]){vis[j]=1;int x=a[i],y=a[j];if(y&&x%y==0)a[i]=x/y,dfs(num+1);if(x&&y%x==0)a[i]=y/x,dfs(num+1);a[i]=x-y,dfs(num+1);a[i]=y-x,dfs(num+1);a[i]=x+y,dfs(num+1);a[i]=x*y,dfs(num+1);a[i]=x,vis[j]=0;}
}
int get(char *c)
{if(strlen(c)==2)return 10;if(c[0]=='A')return 1;if(c[0]=='J')return 11;if(c[0]=='Q')return 12;if(c[0]=='K')return 13;return c[0]-'0';
}
char s[3];
int main()
{while(~scanf("%s",s)){a[1]=get(s);for(int i=2;i<=4;i++){scanf("%s",s);a[i]=get(s);}flag=0;memset(vis,0,sizeof(vis));dfs(1);printf("%s\n",flag?"Yes":"No");}return 0;
}

HDU 1427 速算24点(dfs)相关推荐

  1. HDU - 1427 速算24点(dfs)

    题目链接:点击查看 题目大意:模拟24点游戏,判断是否有解,规则如下:给出四张扑克牌,分别对应着1~13中的四个数,若这四个数字可以通过加减乘除四则运算使结果最后为24,则有解,反之无解 题目分析:因 ...

  2. HDU 1427 速算24点 (深搜)

    题目链接 Problem Description 速算24点相信绝大多数人都玩过.就是随机给你四张牌,包括A(1),2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13).要求只用' ...

  3. HDU 1427 速算24点(DFS) *

    原题链接:Here! 思路:这是get的别人的代码,写的很棒,用next_permutation()取代了括号的作用,精髓,经典 代码: /*Note:代码写的非常(๑•̀ㅂ•́)و✧用next_pe ...

  4. HDU 1427 速算24点

    http://acm.hdu.edu.cn/showproblem.php?pid=1427 C++版本一 题解:DFS 运算符可以重复,所以一共有4!*4^4种情况,并不算特别多(点数增多就是指数级 ...

  5. [HDU 1427]速度计算24点(DFS暴力搜索)

    主题连接:  http://acm.hdu.edu.cn/showproblem.php?pid=1427 思路:简单的DFS.dfs(sum,next,p)表示当前已经算出的值是sum,括号里算 ...

  6. HDU1427 速算24点【DFS】

    速算24点 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  7. 速算C语言程序设计,C语言程序设计课程设计-速算24.doc

    该设计论文已经通过各大高校老师审核认可并通过答辩,准确完整无误.欢迎大家下载学习交流.如有疑问可随时联系店主,竭诚为您解答!! 应用技术学院 课 程 设 计 报 告 课程名称 C语言课程设计 课题名称 ...

  8. 24速算c语言实训报告ppt,C语言课程设计(速算24).doc

    <> 课程设计报告 速算24专业:计算机科学与技术班级:姓名:指导教师:成绩: 计算机与信息工程系 二0一四年二月二十日 目录 1.该系统的功能描述.................... ...

  9. Python写个小游戏:速算24点(上)

    文章目录 前言 速算24点 1. 玩法简介 2. 游戏流程 3. 搭建游戏界面 1). 基本界面 2). 洗牌.发牌 洗牌 发牌 3). 计时器 4). 玩家输入公式(答案) StringVar类 按 ...

最新文章

  1. 转载自csdn SQL SERVER 与ACCESS、EXCEL的数据转换
  2. java 内存_java节省内存的几条建议
  3. linux数据块的大小不一样,HDFS块大小默认为什么是64MB(或者是128MB)
  4. php获取用户的上5级用户
  5. hadoop源码_HBASE源码导入IDEA并开启DEBUG调试
  6. 超简单安装油猴(tampermonkey)脚本及使用教程
  7. 自动驾驶领域中常见英文缩写、相关含义以及常用专业英文
  8. Linux使用代理服务器上网
  9. 匹配数字、大小写字母、汉字、-、_而且不能以_开头或结尾
  10. PDF打印内容缺失问题解决办法
  11. 浅谈网站导航设计经验
  12. icon小图标集合网站
  13. 九存支持 2018全球存储半导体大会暨全球闪存技术峰会
  14. 晶振波形不是正弦波_晶振的3种输出波形,你了解吗?
  15. GAN_1——基础知识
  16. MySQL8.0安装与基于二进制日志文件位置的主从复制
  17. 【Pandas实战】足球运动员数据分析
  18. 数据可视化应用到营销中的5个超酷案例
  19. android 9.0 Launcher3去掉默认的google搜索栏
  20. 后端给图片加水印的方法

热门文章

  1. Stripe中的 googlePay 和 applePay (Java)
  2. 阿里巴巴提示:手动创建线程效果更好
  3. 基于PyQt的分组工具
  4. Bootstrap之按钮的样式
  5. 计算机视觉常用资源整理
  6. Druid连接池加密处理
  7. PHP+Laravel+Fpdi+Fpdf 在PDF模板上编辑自定义文字并输出新PDF文件示例
  8. “看到他的汇报,我彻底服了!”:这个工具能让你的图表多炫酷?
  9. 11.3 树的遍历:LDR,LRD,VLR 相关代码
  10. Z世代的投资 就选仁诚兴业