24点游戏

Time Limit: 1000MS   Memory Limit: 65535KB   64bit IO Format: %lld & %llu

Submit
Status

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

 3
 3
 8
 8

就可以构造出  8÷(3–8÷3)=24

Source

第七届ACM趣味程序设计竞赛第二场(正式赛)

看着像一个排列组合一样,把所有的数字排序,然后列举所有可能的运算,这里传递的参数只有一个x,用来表示已经运算的次数,显然总共要运算四次,每次运算的时候取num【i】与后边的数字进行运算,x-1表示运算次数减少一个,区间也会减少,但是因为num【j】已经使用了,所以把将要消失的num【x-1】给num【j】,使得每一个数字都会被用到,因为运算结果尽量前移并且区间向前减小,所以最后结果存储在num【0】中,数据类型是double的,存储是近似存储,需要判断精度
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
double num[10];
bool flag;
bool dfs(int x)
{
if(x==1)
{
if(fabs(num[0]-24)<1e-2)
return true;
else
return false;
}
double a,b;
for(int i=0;i<x;i++)
{
for(int j=i+1;j<x;j++)
{
a=num[i];
b=num[j];
num[j]=num[x-1];//x表示运算的次数,也用来确定区间,
//每次x-1,同时区间缩小,num[0]作为运算的结果
num[i]=a+b;if(dfs(x-1)) return true;
num[i]=a-b;if(dfs(x-1)) return true;
num[i]=b-a;if(dfs(x-1)) return true;
num[i]=a*b;if(dfs(x-1)) return true;
if(b!=0) num[i]=a/b;if(dfs(x-1)) return true;//除法分母不为0
if(a!=0) num[i]=b/a;if(dfs(x-1)) return true;
num[i]=a;//回溯
num[j]=b;
}
}
return false;
}
int main()
{
int t;
cin>>t;
while(t--)
{
flag=false;
for(int i=0;i<4;i++)
cin>>num[i];
if(dfs(4))
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
return 0;
}

UESTC--1252--24点游戏(dfs)的更多相关文章

  1. cdoj 1252 24点游戏 dfs

    24点游戏 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1252 Descr ...

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

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

  3. php实现 24点游戏算法

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

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

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

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

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

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

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

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

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

  8. bzoj1215 24点游戏

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

  9. Leetcode 679.24点游戏

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

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

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

随机推荐

  1. Python语言之数据结构2(字典,引用)

    1.字典 键值对. dict={ "key1" : "value1", "key2" : "value2" } #add ...

  2. vs Could Not Connect

    解决,   在win7上卸载IIS 10.0 Express ,安装 IIS7.5 Express

  3. 一台电脑同时使用多个Git账号

    参照 https://my.oschina.net/u/3578363/blog/2209781

  4. node.js(API解读) - process (http://snoopyxdy.blog.163.com/blog/static/60117440201192841649337/)

    node.js(API解读) - process 2011-10-28 17:05:34|  分类: node |  标签:nodejs  nodejsprocess  node.jsprocess  ...

  5. 如何用windbg查看_eprocess结构

    打开菜单: File->Symbol File Path... 输入: C:/MyCodesSymbols; SRV*C:/MyLocalSymbols*http://msdl.microsof ...

  6. Centos7搭建ansible运维自动化工具

    1)设置主机名和hosts文件 2)配置阿里云repo源 Wget -O /etc/yum.repos.d/aliyun.repo https://mirrors.aliyun.com/repo/Ce ...

  7. js可以随意拖拽的div的实现

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 【解题报告】洛谷 P1231 教辅的组成

    [解题报告]洛谷 P1231 教辅的组成 题目链接 CSDN链接 这道题就只是一道普通的最大流问题,但是关键所在就是如何构图.要不是我看了题解,真的想不到这个构图方法呢 题目大意我就不写了,自己看好了 ...

  9. 关于Spring的69个问题

    Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架.Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用.Spring ...

  10. centos中安装jdk

    1.上传jdk安装文件到根目录 2.解压到相关目录 (1)创建相应目录mkdir -p /usr/local/java (2)解压 tar -zxvf jdk-7u80-linux-x64.tar.g ...