题目链接:http://noi.openjudge.cn/ch0205/1789/

题解:

  并不是非常简单的搜索,需要考虑一些东西……
  首先有运算符优先级的限制,还有括号,数字的顺序也可以调整,如果只是简单给式子添加运算符和括号,会比较难生成,生成后计算或许还要转换成后缀表达式之类的,很麻烦……

  可以将四个数字添加进一个集合(但并不满足互异性),每次从中提取出两个数字分别进行四种计算,将结果放回集合,如此往复直到只剩一个数字,再与24比较即可(注意不一定非要相等,在适当精度内就可以)

  这样也不需要考虑优先级之类的,也可以枚举出所有情况

  曾经想练一下用滚动数组写一下,因为没法解决回溯问题就失败了……

 #include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
double a[][];
bool dfs(int dep)
{
if(dep==)
{
if(abs(a[dep][]-24.0)<=0.01)return true;
return false;
}
int n=-dep+;
double t1,t2;
for(int i=;i<=n;++i)
{
for(int j=;j<=n;++j)
{
if(i==j)continue;
t1=a[dep][i];
a[dep][i]=;
t2=a[dep][j];
a[dep][j]=;
int m=;
for(int l=;l<=n-;++l)
{
while(!a[dep][m])++m;
a[dep+][l]=a[dep][m];
++m;
}
a[dep+][]=t1+t2;
if(dfs(dep+))return true;
a[dep+][]=t1-t2;
if(dfs(dep+))return true;
a[dep+][]=t1*t2;
if(dfs(dep+))return true;
a[dep+][]=t1/t2;
if(dfs(dep+))return true;
a[dep][i]=t1;
a[dep][j]=t2;
}
}
return false;
}
int main()
{
while()
{
memset(a,,sizeof(a));
scanf("%lf %lf %lf %lf",&a[][],&a[][],&a[][],&a[][]);
if(!a[][])break;
if(dfs())printf("YES\n");
else printf("NO\n");
}
return ;
}

openjudge-NOI 2.5-1789 算24的更多相关文章

  1. 【noi 2.5_1789】算24(dfs)

    最开始我想的是全排列+枚举符号和括号的方法,但是我自己倒腾了很久还是打不对,只好向他人请教.正解很机智--直接随意将几个数"捆绑"在一起,值存在其中一个数上,其他数标记不可再选,直 ...

  2. hdu 1427 速算24点

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1427 速算24点 Description 速算24点相信绝大多数人都玩过.就是随机给你四张牌,包括A( ...

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

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

  4. hdu1427之速算24点

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

  5. python实现算24的算法

    1.介绍 给定4个整数,数字范围在1-13之间,任意使用 + - * / ( ) ,构造出一个表达式,使得最终结果为24,这就是常见的算24的游戏.本文介绍用Python语言实现的两种方式.2.实现思 ...

  6. python 穷举法 算24点(史上最简短代码)

    本来想用回溯法实现 算24点.题目都拟好了,就是<python 回溯法 子集树模板 系列 -- 7.24点>.无奈想了一天,没有头绪.只好改用暴力穷举法. 思路说明 根据四个数,三个运算符 ...

  7. hdu 1427 速算24点 dfs暴力搜索

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

  8. Hdu1427 速算24点 2017-01-18 17:26 46人阅读 评论(0) 收藏

    速算24点 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submiss ...

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

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

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

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

随机推荐

  1. Joseph's Problem UVALive - 3521(等差数列的应用)

    题意:给定n, k,求出∑ni=1(k mod i) 思路:由于n和k都很大,直接暴力是行不通的,然后在纸上画了一些情况,就发现其实对于k/i相同的那些项是形成等差数列的,于是就可以把整个序列进行拆分 ...

  2. MT【147】又见最大最小

    (2018浙江省赛12题)设$a\in R$,且对任意的实数$b$均有$\max\limits_{x\in[0,1]}|x^2+ax+b|\ge1$求$a$的范围_____解答:由题意$\min\li ...

  3. zookeeper和PHP zookeeper和kafka 扩展安装

    http://blog.csdn.net/fenglailea/article/details/52458737#t3   目录(?)[-] 安装zookeeper 1直接安装zookeeper无须编 ...

  4. 前端学习 -- image标签和meta标签

    Image标签 使用img标签来向网页中引入一个外部图片, img标签也是一个自结束标签 属性: src:设置一个外部图片的路径 alt:可以用来设置在图片不能显示时,对图片的描述 搜索引擎可以通过a ...

  5. 2018.9.22 Bubble Cup 11-Finals(Online Mirror,Div.2)

    感受了一下ACM的感觉,然后被神题和神犇们暴踩了 夭寿啦,机房大佬非法组队啊 比赛前i207M插的“怕不是不到九点就要弃疗”的flag成功生效 一开始先扫了一遍题,我一开始以为A题是个扫一遍的题,然后 ...

  6. 在阿里云上无法使用mailx发送邮件的解决办法,验证可用。

    由于阿里云已将25端口封了(改用465端口),所以在ECS上往外发邮件时要作相应的配置才行. 使用的是163的企业邮箱,笔记简洁可用. 在阿里云的“安全组”开放645端口通行. 1.安装相应软件包: ...

  7. R语言:R2OpenBUGS

    R语言:R2OpenBUGS 用这个包调用BUGS model,分别用表格和图形概述inference和convergence,保存估计的结果 as.bugs.array 转换成bugs object ...

  8. linux命令总结之查找命令find、locate、whereis、which、type

    我们经常需要在系统中查找一个文件,那么在Linux系统中我们如何准确高效的确定一个文件在系统中的具体位置呢?一下我总结了在linux系统中用于查找文件的几个命令. 1.find命令 find是最常用也 ...

  9. [大数据]-Fscrawler导入文件(txt,html,pdf,worf...)到Elasticsearch5.3.1并配置同义词过滤

    fscrawler是ES的一个文件导入插件,只需要简单的配置就可以实现将本地文件系统的文件导入到ES中进行检索,同时支持丰富的文件格式(txt.pdf,html,word...)等等.下面详细介绍下f ...

  10. Hadoop生态圈-HBase的HFile创建方式

    Hadoop生态圈-HBase的HFile创建方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 废话不多说,直接上代码,想说的话都在代码的注释里面. 一.环境准备 list cr ...