OpenJudge 2787 算24
1.链接地址:
http://poj.org/problem?id=1631
http://bailian.openjudge.cn/practice/2787/
2.题目:
- 总时间限制:
- 3000ms
- 内存限制:
- 65536kB
- 描述
- 给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。现在的问题是,是否存在一种方式使得得到的表达式的结果等于24。
这里加减乘除以及括号的运算结果和运算的优先级跟我们平常的定义一致(这里的除法定义是实数除法)。
比如,对于5,5,5,1,我们知道5 * (5 – 1 / 5) = 24,因此可以得到24。又比如,对于1,1,4,2,我们怎么都不能得到24。
- 输入
- 输入数据包括多行,每行给出一组测试数据,包括4个小于10个正整数。最后一组测试数据中包括4个0,表示输入的结束,这组数据不用处理。
- 输出
- 对于每一组测试数据,输出一行,如果可以得到24,输出“YES”;否则,输出“NO”。
- 样例输入
5 5 5 1
1 1 4 2
0 0 0 0- 样例输出
YES
NO
3.思路:
4.代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath> using namespace std; double a[];
bool used[];
bool f(int k)
{
int i,j;
if(k == )
{
for(i = ; i < ; ++i)
{
if(!used[i])
{
if(fabs(a[i] - ) < 0.0001) return true;
else return false;
}
}
return false;
}
else
{
for(i = ; i < ; ++i)
{
if(!used[i])
{
for(j = i + ; j < ; ++j)
{
if(!used[j])
{
double v1 = a[i];
double v2 = a[j];
used[j] = true; a[i] = v1 + v2;
if(f(k - )) return true; a[i] = v1 * v2;
if(f(k - )) return true; a[i] = v1 - v2;
if(f(k - )) return true; a[i] = v2 - v1;
if(f(k - )) return true; a[i] = v1 / v2;
if(f(k - )) return true; a[i] = v2 / v1;
if(f(k - )) return true; a[i] = v1;
used[j] = false;
}
}
} }
}
return false;
} int main()
{
//freopen("C://input.txt","r",stdin); cin >> a[] >> a[] >> a[] >> a[];
while(a[] != || a[] != || a[] != || a[] != )
{
memset(used,,sizeof(bool) * ); if(f()) cout << "YES" << endl;
else cout << "NO" << endl; cin >> a[] >> a[] >> a[] >> a[];
} return ;
}
OpenJudge 2787 算24的更多相关文章
- hdu 1427 速算24点
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1427 速算24点 Description 速算24点相信绝大多数人都玩过.就是随机给你四张牌,包括A( ...
- 24点游戏&&速算24点(dfs)
24点游戏 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Sta ...
- hdu1427之速算24点
速算24点 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- python实现算24的算法
1.介绍 给定4个整数,数字范围在1-13之间,任意使用 + - * / ( ) ,构造出一个表达式,使得最终结果为24,这就是常见的算24的游戏.本文介绍用Python语言实现的两种方式.2.实现思 ...
- python 穷举法 算24点(史上最简短代码)
本来想用回溯法实现 算24点.题目都拟好了,就是<python 回溯法 子集树模板 系列 -- 7.24点>.无奈想了一天,没有头绪.只好改用暴力穷举法. 思路说明 根据四个数,三个运算符 ...
- hdu 1427 速算24点 dfs暴力搜索
速算24点 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem De ...
- Hdu1427 速算24点 2017-01-18 17:26 46人阅读 评论(0) 收藏
速算24点 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submiss ...
- HDU 1427 速算24点 (深搜)
题目链接 Problem Description 速算24点相信绝大多数人都玩过.就是随机给你四张牌,包括A(1),2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13).要求只用' ...
- 【Nodejs】“快算24”扑克牌游戏算法 1.02
快算24是一种挺好的锻炼孩子算数能力的扑克牌游戏,它的游戏方式是把四张牌的牌面数值通过有限四则运算得到结果24,四张牌必须仅用一次.各地玩法还有点差别,有的只算1-10,其它抽出来:有的地方把整幅牌都 ...
随机推荐
- 群赛 ZOJ3741(dp) ZOJ3911(线段树)
zoj3741 简单dp.wa了两个小时,中间改了好多细节.后来还是不对,参考了别人的代码,发现一个致命问题,初始化的时候,不是每种状态都能直接达到的.初始化成-1. (题目有个小坑,0<=L& ...
- python —print
今天开始学python了,“装X”安装了最新版本python 3.4.1 然后,print “hello world!" 就出错了... 一搜原来... python v3.0以后的版本pr ...
- jquery实时监听某个文本框的输入事件
想给页面的的一个文本框添加监听事件 $(function(){ //页面加载完毕后触发事件 $("textarea[name='content']").bind('input pr ...
- C#Winform窗口特效源码(1)
本文基于.Net开发,使用C#作为开发语言,分别包含以下效果: 移动无边框窗口.窗口移动限制(限制在屏幕内).桌面贴边自动隐藏(仿QQ隐藏窗口) 1.移动无边框窗口 采用了消息的方式,可以实现通过窗口 ...
- 【转】Spring websocket 使用
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html https://spr ...
- python的memcache使用如果对key设置了一个int型
如果对key设置了int型,会出现不可预知的错误,这个问题纠结了我好久,最终还是加了个str(),切忌切忌
- android87 Service
---------------------------------------------------------------------------- #Service(服务和Activity是运行 ...
- 编译openjdk源码
http://www.cnblogs.com/ACFLOOD/p/5528035.html
- HTML增加删除邮件(table)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- Android开发之线程池使用总结
线程池算是Android开发中非常常用的一个东西了,只要涉及到线程的地方,大多数情况下都会涉及到线程池.Android开发中线程池的使用和Java中线程池的使用基本一致.那么今天我想来总结一下Andr ...