Description

红魔馆的蕾米莉亚大小姐一天发现人类有一种叫做24点的游戏,于是就带着一副不知哪里弄来的扑克牌到图书馆找帕秋莉玩

24点游戏的规则:从一副牌中随机抽取4张牌,牌的点数为1到13之间的13个整数,要求只用加减乘除运算符以及括号,使得最终运算结果为24,每张牌的点数必须且仅能使用一次(牌的位置可任意调换)

一副牌抽出7 8 3 1这四张扑克时,大小姐才刚想出(7-3-1)*8=24的方法,而帕秋莉却早就说出了3/(1-7/8)=24的方法,作为红魔馆威严满满的一馆之主岂能就此认输,为了大小姐能稍微捡起一点威严,现在请你帮忙,你的任务是针对每一组随机产生的四张牌,判断是否有解。

Input

输入数据第一行是一个整数T。下面由T组测试数据组成,每组测试数据占一行,每行有4个整数a(1 <= a <= 13)代表4张牌

Output

对于每一组输入数据对应一行输出。如果有解则输出"Yes",无解则输出"No"。

Sample Input

3
6 4 3 8
8 1 7 1
3 3 7 7

Sample Output

Yes
No
Yes

题意 :

  • 计算24点

思路 和代码:

  • 递归处理,深度优先搜索

    dfs(int n) 表示我现在还剩下多少个数,没有处理

    由于有括号的原因,我们每次就直接暴力枚举n个数中的两个数,然后进行加减乘除就好了,然后将这两个数变成新的一个数,然后dfs(n-1)就好了,这样不停的递归下去。

  • 暴力写出所有情况

    a[1]+a[2]+a[3]+a[4]

    a[1]+a[2]+a[3]-a[4]

code :

#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
using namespace std;
double v[4];
bool dfs(int n) {if(n == 1)  {if(fabs(v[0] - 24) < 1e-6) return true;else  return false;}else{for(int i = 0; i < n; ++i)for(int j = i + 1;j < n; ++j) {double x1 = v[i];double x2 = v[j];v[j] = v[n - 1];  //将后面的数提到前面来v[i] = x1 + x2; if(dfs(n - 1))  return true;v[i] = x1 * x2; if(dfs(n - 1))  return true;v[i] = x1 - x2; if(dfs(n - 1))  return true;v[i] = x2 - x1; if(dfs(n - 1))  return true;if(x1){  v[i] = x2/x1; if(dfs(n - 1)) return true; }if(x2){  v[i] = x1/x2; if(dfs(n - 1)) return true; }//对于数v[j]没有满足条件,所以还原原来的数v[i] = x1;v[j] = x2;}}//都不满足的话,就返回falsereturn false;
}int main(void) {int T;cin>>T;while(T--) {cin >> v[0] >> v[1] >> v[2] >> v[3];if(dfs(4))cout<<"Yes" << endl;elsecout<<"No" << endl;}return 0;
}

1224 红魔馆的纸牌游戏 (计算24点,dfs)相关推荐

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

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

  2. c语言算24点答案,C语言-纸牌计算24点小游戏

    C语言实现纸牌计算24点小游戏 利用系统时间设定随机种子生成4个随机数,并对4个数字之间的运算次序以及运算符号进行枚举,从而计算判断是否能得出24,以达到程序目的.程序主要功能已完成,目前还有部分细节 ...

  3. C语言-纸牌计算24点小游戏

    C语言实现纸牌计算24点小游戏 利用系统时间设定随机种子生成4个随机数,并对4个数字之间的运算次序以及运算符号进行枚举,从而计算判断是否能得出24,以达到程序目的.程序主要功能已完成,目前还有部分细节 ...

  4. 24点游戏 java实现_java实现24点纸牌游戏

    本文题目为大家分享了java实现24点纸牌游戏的具体代码,供大家参考,具体内容如下 题目 24点游戏是经典的纸牌益智游戏. 常见游戏规则: 从扑克中每次取出4张牌.使用加减乘除,第一个能得出24者为赢 ...

  5. 24点纸牌游戏,c语言实现

    (此程序参考https://blog.csdn.net/weixin_41258179/article/details/82901853,并做出一些改进) 一.题目要求: 24点游戏规则: 从扑克中每 ...

  6. 使用Scala语言开发GUI界面的计算24点的游戏应用

    今年开始学习Scala语言,对它的强大和精妙叹为观止,同时也深深感到,要熟练掌握这门语言,还必须克服很多艰难险阻. 这时,我就在想,如果能有一种方式,通过实际的应用实例,以寓教于乐的方式,引导我们逐步 ...

  7. 计算24点游戏精化算法剖析

    很多人都玩过这个数学味儿很浓的益智游戏:抽出4张扑克牌,牌上的点数代表四个数字,花牌视为1点(有的把J.Q.K分别视为11.12.13点),玩家中谁最先运用加减乘除四则运算,由这四个数计算出24,谁就 ...

  8. python_用python计算24点游戏

    24点的游戏大家都玩过,这次我们用python来算出四张牌的计算24的方法 def calculates(number, n, result):if n == 1:if number[0] == re ...

  9. 计算机游戏纸牌技巧,扑克牌游戏“算24”的程序解法

    一种有趣的扑克牌游戏–算24 众多的扑克牌游戏中,算24是一种不错的锻炼反应力和计算能力的智力游戏,游戏规则大致是这样:从去掉大小王的一副扑克中任意抽取四张,读取上面的数字(其中A算1,2-10就是2 ...

最新文章

  1. Geany整体增加减少缩进快捷键
  2. 工作75::一直报404
  3. 使用C与C++混合编程封装UDP协议
  4. SAP FI配置步骤
  5. 窃取任意GitHub Actions敏感信息如此简单,只需要分支改个名?
  6. 13. 在后台配置主题
  7. Migrate Project to Gradle? This project does not use the Gradle build system
  8. 专业音响常用测试软件,音响师怎么测试音响?离不开这几款音频处理软件!
  9. 数据采集工具:八爪鱼
  10. 畅玩树莓派4B(一)树莓派系统安装和SSH连接
  11. C#读取网卡地址的几种方法
  12. css的nth选择器,CSS选择器之nth
  13. UE4中程序驱动的LookAt动画
  14. 《青春》 by 席慕容
  15. 游戏团队,各职位人员离职所带来的影响和不同
  16. 如何不出门就可以看遍中国各个城市的美景?
  17. 【每日新闻】谷歌CEO皮查伊:AI会拯救人类,而不是摧毁 | 致远互联签约锤子科技
  18. Android 9.0 AutoMotive模块之CarService
  19. 听说Google翻译挺不错的,于是我用Python的selenium把它爬下来了
  20. 就业问题--三方协议与网签、劳动合同、社会保险

热门文章

  1. before和after怎么区分_before和after区别 after的用法
  2. c语言中1 lt lt 10什么意思,卡西欧lt1和lt3是什么意思
  3. Drupal 常用模块汇总
  4. 富文本带点击事件的解决方案
  5. 电容笔和触控笔有哪些区别?双十一好用不贵电容笔推荐
  6. 蜡模精确成型在浇注中的实验性研究
  7. R语言文字云神器wordcloud2包
  8. 【笔记】识别手写数字神经网络
  9. 西瓜创客联创刘鹏:在AI的曙光中拥抱教育的未来
  10. MySQL - 对数据表进行“增删查改”的基础操作 - 细节狂魔