OpenJudge 2787 算24
2014-02-21 23:31
399 查看
1.链接地址:
http://poj.org/problem?id=1631 http://bailian.openjudge.cn/practice/2787/
2.题目:
3.思路:
4.代码:
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,我们知道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[4]; bool used[4]; bool f(int k) { int i,j; if(k == 1) { for(i = 0; i < 4; ++i) { if(!used[i]) { if(fabs(a[i] - 24) < 0.0001) return true; else return false; } } return false; } else { for(i = 0; i < 4; ++i) { if(!used[i]) { for(j = i + 1; j < 4; ++j) { if(!used[j]) { double v1 = a[i]; double v2 = a[j]; used[j] = true; a[i] = v1 + v2; if(f(k - 1)) return true; a[i] = v1 * v2; if(f(k - 1)) return true; a[i] = v1 - v2; if(f(k - 1)) return true; a[i] = v2 - v1; if(f(k - 1)) return true; a[i] = v1 / v2; if(f(k - 1)) return true; a[i] = v2 / v1; if(f(k - 1)) return true; a[i] = v1; used[j] = false; } } } } } return false; } int main() { //freopen("C://input.txt","r",stdin); cin >> a[0] >> a[1] >> a[2] >> a[3]; while(a[0] != 0 || a[1] != 0 || a[2] != 0 || a[3] != 0) { memset(used,0,sizeof(bool) * 4); if(f(4)) cout << "YES" << endl; else cout << "NO" << endl; cin >> a[0] >> a[1] >> a[2] >> a[3]; } return 0; }
相关文章推荐
- OpenJudge/Poj 1631 Bridging signals
- hadoop的安装与配置(伪分布式模式安装)
- nginx 升级成 tengine 的代码
- Linux makefile 教程 非常详细,且易懂
- squid常规代理实现内网的共享上网
- linux学习之ssh-copy-id及其替代命令
- linux系统下安装图形用户界面包
- Linux守护进程
- 代替nginx的服务器 - The Tengine Web Server
- centos下安装nginx
- linux cd 命令的几个小技巧
- VM中Centos克隆后致MAC重复故障解决
- PHP案例 网站会员管理设计
- 坚持学linux--它就是未来
- bash参考手册之五(shell变量)
- Nginx常用命令
- sth about Hadoop
- Linux控制台汉化Fbterm和Yong .
- 手把手教程: CentOS 6.5 LVS + KeepAlived 搭建 负载均衡 高可用 集群
- 如何在apache官网下载将将jar包