【递归练习】算24点
来源:互联网 发布:数据库实用教程pdf 编辑:程序博客网 时间:2024/06/06 14:22
代码
#include <cstdio>#include <cmath>#define EPS 1e-8using namespace std;double a[4];bool judge(double a[], int n){ if (n == 1){ if (fabs(a[0]-24) <= EPS) return 1; else return 0; } double b[4]; for (int i = 0; i < n-1; ++i) for (int j = i+1; j < n; ++j){ int rem = 0; for (int k = 0; k < n; ++k) if (k != i && k != j) b[rem++] = a[k]; b[rem] = a[i] + a[j]; if (judge(b, rem+1)) return 1; b[rem] = a[i] - a[j]; if (judge(b, rem+1)) return 1; b[rem] = a[j] - a[i]; if (judge(b, rem+1)) return 1; b[rem] = a[i] * a[j]; if (judge(b, rem+1)) return 1; if (fabs(a[j]) > EPS){ b[rem] = a[i] / a[j]; if (judge(b, rem+1)) return 1; } if (fabs(a[i]) > EPS){ b[rem] = a[j] / a[i]; if (judge(b, rem+1)) return 1; } } return 0;}int main(){ while(~scanf("%lf%lf%lf%lf", &a[0], &a[1], &a[2], &a[3]) && (a[0] || a[1] || a[2] || a[3])) judge(a, 4) ? printf("YES\n"): printf("NO\n"); return 0;}
说明
- 输入四个数,输出是否能算出24
- 允许出现分数/负数
- 比较浮点数是否相等不能用
==
阅读全文
0 0
- 【递归练习】算24点
- 递归算24点
- 递归-24点
- 24点游戏 Java 递归
- 【JAVA】24点 递归穷举
- 递归练习
- 递归练习
- 递归 练习
- 递归练习
- 递归练习
- 递归练习
- 递归练习
- 递归练习
- 递归练习
- 递归练习
- 递归小练习
- 递归的练习
- C语言递归练习
- 过滤器Filter
- 《机器学习实战》学习笔记——K-近邻算法(KNN)(一)分类器的简单实现
- mybatis注册映射文件
- 交叉验证
- 使用JMeter创建数据库(Mysql)测试
- 【递归练习】算24点
- 修改WampServer的默认端口
- ArrayList的方法:remove(object o) 、remove(int index)、removeAll(Collection c)时间复杂度的比较
- K倍区间
- ROS Navigation的costmap_2d类继承关系与实现方法
- 2016级数据结构结课总结
- Linux-内存-数据结构
- RTC使用野火例程,LSE复位可用,HSE和LSI不可用问题。
- TensorFlow实战——个性化推荐