hiho 98 搜索一 24点
2016-05-21 13:25
246 查看
问题
给定四个数, 使用加减乘除四中操作, 得到24, 每个数只能使用一次。解法
暴力枚举法,http://hihocoder.com/contest/hiho98/problem/1#
#include <bits/stdc++.h> using namespace std; int a[4]; enum{add=0, sub, mul, divid, rsub, rdiv, OPNUM}; int operators[3]; const double ESP = 1e-5; double Op(double a, double b, int opID) { switch(operators[opID]){ case add: return a+b; case sub: return a-b; case mul: return a*b; case divid: return a/b; case rsub: return b-a; case rdiv: return b/a; } } bool test() { return abs(Op(Op(Op(a[0], a[1], 0), a[2], 1), a[3], 2)-24.0) < ESP || abs(Op(Op(a[0], a[1], 0), Op(a[2], a[3], 2), 1) - 24.0) < ESP; } bool result() { do{ for (int i=0; i< 6*6*6; ++i){ int a = i; operators[0] = a%6; a/= 6; operators[1] = a%6; a/= 6; operators[2] = a%6; if (test()) return true; } }while(next_permutation(a, a+4)); return false; } int main() { int t; scanf("%d", &t); while(t--){ scanf("%d %d %d %d", a, a+1, a+2, a+3); sort(a, a+4); memset(operators, 0, sizeof(operators)); printf("%s\n", result()? "Yes":"No"); } return 0; }
相关文章推荐
- __attribute__((packed))作用
- PE新手教程
- PE新手教程
- ViewPropertyAnimator源码分析
- 【GDOI2014模拟】旅行(水法)
- centos 下安装.net core
- MapReduce程序转换为Spark程序
- 利用反射机制编写一个程序,这个程序能把类中所有的成员变量赋值,并把操作信息输出到控制台。
- SQL SERVER 数学函数
- String的equals方法和contentEquals方法的比较
- Android Layout Trick #2: Include to Reuse
- 输入法评价
- 转-Spring单例模式与线程安全
- mysql/Java服务端对emoji的支持
- Centos 7 相关操作与配置
- 坐姿:
- 工厂模式与抽象工厂模式的对比
- EF6 SQL Logging – Part 3: Interception building blocks | One Unicorn
- Python Anaconda2 (64-bit) 安装后启动jupyter-notebook默认目录更改
- LeetCode 037 Sudoku Solver