24点游戏

Time Limit: 20 Sec

Memory Limit: 256 MB

题目连接

http://acm.uestc.edu.cn/#/problem/show/1252

Description

24点就是给你一串数字,问你是否通过加减乘除括号构成24点。

沈爷觉得这个很好玩,就决定考考你,给你4个数,可以交换位置,可以用加减乘除和括号,是否能构成24点呢?

注意哦~这里的除法并不是整数除法,比如样例

Input

第一行T,表示有多少组测试数据,1≤T≤50

接下来T行,每行4个正整数a1, a2, a3, a4,表示每个数都是多少,1≤ai≤13

Output

对于每一次询问,如果能够凑成24点,输出yes,否则输出no

Sample Input

2
3 3 8 8
1 1 1 1

Sample Output

yes
no

HINT

题意

题解:

1.递归处理,深度优先搜索

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

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

关于有理数除法的问题,我们有2种方法可以解决

(1)自己手写一个分数的类(比较麻烦),然后进行分数的加减乘除去解决这一道题

(2)由于只有4个数,而且每个数最大才13,所以我们直接全部用小数去处理就好了,最后的答案能够得到24的话,那么最后我们剩下的那个小数x,必定满足fabs(x-24)<Y,其中Y是一个接近于0的数。在本题,eps 只要小于0.01就能过

2.直接暴力写出所有情况即可

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

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

......

一直写下去就好

大概应该只有600多个

代码:

#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
double a[];
bool fun(int n){
if(n==){
if(fabs(a[]-)<1e-)return true;
else return false;
}
for(int i=;i<n;i++){
for(int j=i+;j<n;j++){
double x1=a[i];
double x2=a[j];
a[j]=a[n-];
a[i]=x1+x2;if(fun(n-))return true;
a[i]=x1*x2;if(fun(n-))return true;
a[i]=x1-x2;if(fun(n-))return true;
a[i]=x2-x1;if(fun(n-))return true;
if(x2){a[i]=x1/x2;if(fun(n-))return true;}
if(x1){a[i]=x2/x1;if(fun(n-))return true;}
a[i]=x1;
a[j]=x2;
}
}
return false;
} int main()
{ int T;
cin>>T;
while(T--){
cin>>a[]>>a[]>>a[]>>a[];
if(fun())cout<<"yes\n";
else cout<<"no\n";
}
return ;
}

cdoj 1252 24点游戏 dfs的更多相关文章

  1. 24点游戏&&速算24点(dfs)

    24点游戏 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Sta ...

  2. php实现 24点游戏算法

    php实现 24点游戏算法 一.总结 一句话总结:把多元运算转化为两元运算,先从四个数中取出两个数进行运算,然后把运算结果和第三个数进行运算,再把结果与第四个数进行运算.在求表达式的过程中,最难处理的 ...

  3. Leetcode之深度优先搜索&回溯专题-679. 24 点游戏(24 Game)

    Leetcode之深度优先搜索&回溯专题-679. 24 点游戏(24 Game) 深度优先搜索的解题详细介绍,点击 你有 4 张写有 1 到 9 数字的牌.你需要判断是否能通过 *,/,+, ...

  4. 经典趣味24点游戏程序设计(python)

    一.游戏玩法介绍: 24点游戏是儿时玩的主要益智类游戏之一,玩法为:从一副扑克中抽取4张牌,对4张牌使用加减乘除中的任何方法,使计算结果为24.例如,2,3,4,6,通过( ( ( 4 + 6 ) - ...

  5. 24点游戏详细截图介绍以及原型、Alpha、Beta对比

    原型设计 图片展示 功能与界面设计 1.登录注册 2.手机号验证 3.24点游戏 4.粉色系女生界面 Alpha 图片展示 功能与界面设计 1.24点游戏 2.背景音乐 3.可查看多种可能的答案 4. ...

  6. 【Nodejs】“快算24”扑克牌游戏算法

    算24是一款扑克牌游戏,它的游戏方式是把四张牌的牌面数值通过四则运算得到结果24,四张牌必须仅用一次.这是一种挺好的锻炼孩子算数能力的扑克牌游戏. 各地玩法还有点差别,有的只算1-10,其它抽出来:有 ...

  7. bzoj1215 24点游戏

    Description 为了培养小孩的计算能力,大人们经常给小孩玩这样的游戏:从1付扑克牌中任意抽出4张扑克,要小孩用“+”.“-”.“×”.“÷”和括号组成一个合法的表达式,并使表达式的值为24点. ...

  8. Leetcode 679.24点游戏

    24点游戏 你有 4 张写有 1 到 9 数字的牌.你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24. 示例 1: 输入: [4, 1, 8, 7] 输出: True 解释: (8-4) ...

  9. 用python代替人脑运算24点游戏

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:老方玩编程 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...

随机推荐

  1. ORACLE CLIENT客户端安装步骤详解

    下载地址: http://download.oracle.com/otn/nt/oracle11g/112010/win32_11gR2_client.zip 先将下载下来的ZIP文件解压,并运行se ...

  2. Oracle 不同故障的恢复方案

    之前在Blog中对RMAN 的备份和恢复做了说明,刚看了下,在恢复这块还有知识点遗漏了. 而且恢复这块很重要,如果DB 真要出了什么问题,就要掌握对应的恢复方法. 所以把DB的恢复这块单独拿出来说明一 ...

  3. java web 学习十五(jsp基础语法)

    任何语言都有自己的语法,JAVA中有,JSP虽然是在JAVA上的一种应用,但是依然有其自己扩充的语法,而且在JSP中,所有的JAVA语句都可以使用. 一.JSP模版元素 JSP页面中的HTML内容称之 ...

  4. Multiple View Geometry in Computer Vision Second Edition by Richard Hartley 读书笔记(一)

    var bdots = "../" var sequence = [ 'l1', 'l2', 'l3', 'l4' ]; Chapter1是个总览,引出了射影几何的概念,通过在欧式 ...

  5. Windows7 64位系统下无法安装网络打印机的解决方法

    背景: 公司一台HP LaserJet 1010 打印机连在一台Windows XP的电脑上,而我的是windows7 64位系统,无法安装驱动解决办法:1:去惠普官网上下载对应的64位驱动(什么Vi ...

  6. qt文本编辑器

    示例代码: mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include ...

  7. 机器学习中的数学(3)-模型组合(Model Combining)之Boosting与Gradient Boosting

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  8. BootStrap入门教程 (三) :可重用组件(按钮,导航,标签,徽章,排版,缩略图,提醒,进度条,杂项)

    上讲回顾:Bootstrap的基础CSS(Base CSS)提供了优雅,一致的多种基础Html页面要素,包括排版,表格,表单,按钮等,能够满足前端工程师的基本要素需求. Bootstrap作为完整的前 ...

  9. 命令行dump anr traces.txt文件

    adb shell su ps //这里找到自己app对应的pid pid //退出shell 模式 adb pull /data/anr/traces.txt f:\log

  10. JDBC学习笔记(4)——PreparedStatement的使用

    PreparedStatement public interface PreparedStatement extends Statement;可以看到PreparedStatement是Stateme ...