HDU 1427 速算24点(dfs)
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)相关推荐
- HDU - 1427 速算24点(dfs)
题目链接:点击查看 题目大意:模拟24点游戏,判断是否有解,规则如下:给出四张扑克牌,分别对应着1~13中的四个数,若这四个数字可以通过加减乘除四则运算使结果最后为24,则有解,反之无解 题目分析:因 ...
- HDU 1427 速算24点 (深搜)
题目链接 Problem Description 速算24点相信绝大多数人都玩过.就是随机给你四张牌,包括A(1),2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13).要求只用' ...
- HDU 1427 速算24点(DFS) *
原题链接:Here! 思路:这是get的别人的代码,写的很棒,用next_permutation()取代了括号的作用,精髓,经典 代码: /*Note:代码写的非常(๑•̀ㅂ•́)و✧用next_pe ...
- HDU 1427 速算24点
http://acm.hdu.edu.cn/showproblem.php?pid=1427 C++版本一 题解:DFS 运算符可以重复,所以一共有4!*4^4种情况,并不算特别多(点数增多就是指数级 ...
- [HDU 1427]速度计算24点(DFS暴力搜索)
主题连接: http://acm.hdu.edu.cn/showproblem.php?pid=1427 思路:简单的DFS.dfs(sum,next,p)表示当前已经算出的值是sum,括号里算 ...
- 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.该系统的功能描述.................... ...
- Python写个小游戏:速算24点(上)
文章目录 前言 速算24点 1. 玩法简介 2. 游戏流程 3. 搭建游戏界面 1). 基本界面 2). 洗牌.发牌 洗牌 发牌 3). 计时器 4). 玩家输入公式(答案) StringVar类 按 ...
最新文章
- 转载自csdn SQL SERVER 与ACCESS、EXCEL的数据转换
- java 内存_java节省内存的几条建议
- linux数据块的大小不一样,HDFS块大小默认为什么是64MB(或者是128MB)
- php获取用户的上5级用户
- hadoop源码_HBASE源码导入IDEA并开启DEBUG调试
- 超简单安装油猴(tampermonkey)脚本及使用教程
- 自动驾驶领域中常见英文缩写、相关含义以及常用专业英文
- Linux使用代理服务器上网
- 匹配数字、大小写字母、汉字、-、_而且不能以_开头或结尾
- PDF打印内容缺失问题解决办法
- 浅谈网站导航设计经验
- icon小图标集合网站
- 九存支持 2018全球存储半导体大会暨全球闪存技术峰会
- 晶振波形不是正弦波_晶振的3种输出波形,你了解吗?
- GAN_1——基础知识
- MySQL8.0安装与基于二进制日志文件位置的主从复制
- 【Pandas实战】足球运动员数据分析
- 数据可视化应用到营销中的5个超酷案例
- android 9.0 Launcher3去掉默认的google搜索栏
- 后端给图片加水印的方法