当前位置: 首页 > news >正文

1789:算24

题目

总时间限制: 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

题意

输入多组数据,判断每组数据的四个数用加减乘除能不能得到24。

思路

用数组a1存储当前数字,整数n表示当前数字个数。如果 n==1且唯一数字等于24(考虑浮点精度),返回 true;否则返回 false。遍历所有数字对(i, j),对每对数字尝试所有运算符(+,-,*,/),将结果放入新数组 a2(包含剩余数字和运算结果),然后递归处理a2。

代码

using namespace std;
double a[5];
bool f(double a1[],int n){//递归函数double a2[5];int b;if(n==1&&abs(a1[0]-24.0)<0.000001){如果只剩一个数字,检查是否等于24(考虑浮点精度)return true;}if(n==1){//只剩一个数字但不是24return false;}//遍历所有可能的数字对组合for(int i=0;i<n-1;i++){for(int j=i+1;j<n;j++){b=1;//从a2[1]开始填充(a2[0]将存放运算结果)for(int k=0;k<n;k++){if(k!=i&&k!=j){a2[b++]=a1[k];}}//六种运算方式(减法和除法有两种顺序)a2[0]=a1[i]+a1[j];if(f(a2,n-1)==true) return true;a2[0]=a1[i]-a1[j];if(f(a2,n-1)==true) return true;a2[0]=a1[j]-a1[i];if(f(a2,n-1)==true) return true;a2[0]=a1[i]*a1[j];if(f(a2,n-1)==true) return true;a2[0]=a1[i]/a1[j];if(f(a2,n-1)==true) return true;a2[0]=a1[j]/a1[i];if(f(a2,n-1)==true) return true;}}//所有组合都尝试过了,都无法得到24return false;
}
int main(){while(1){//无限循环,直到输入4个0cin>>a[0]>>a[1]>>a[2]>>a[3];if(a[0]==0&&a[1]==0&&a[2]==0&&a[3]==0){break;}//调用递归函数判断能否得到24if(f(a,4)) cout<<"YES";else cout<<"NO";cout<<endl;}return 0;
}
http://www.rkmt.cn/news/8644.html

相关文章:

  • 铁头山羊stm32-HAL库 - 实践
  • IDEA编译Maven任务后target目录没有class
  • 2025CSP-S初赛游记
  • 完整教程:AVL树(平衡二叉搜索树)
  • Vscode + Latex指南
  • kafka创建topic
  • WPS 2025最新版EXE
  • go语言学习之strconv将字符串转数据类型
  • csp2025
  • Ai元人文:价值共生时代的技术哲学构想之宣言
  • 完整教程:TruckSim与Matlab-Simulink联合仿真(一)
  • AI 智能体与 Coze 工作流实践:公众号对标账号集采 - 详解
  • PostGIS 介绍(2)--PostGIS 参考
  • Java编译全过程解密:从源码到机器码的奇幻之旅
  • 深搜广搜(DFS、BFS)
  • 成功没有奇迹,只有积累----Bruce Lee
  • day08 课程
  • Java基础语法1
  • 0voice-2.1.2-事件驱动reactor的原理与实现
  • Python 潮流周刊#120:新型 Python 类型检查器对比(摘要)
  • 精选HTML、JavaScript、ASP代码片段集锦
  • rook-ceph CRD资源配置时效困难
  • 实用指南:conda常见问题
  • 关于1200模拟量输入滤波的问题
  • yoloV8
  • 插座(SOCKET)
  • Red Hat 8.5.0-18 部署ceph文件系统 - 实践
  • 部署 Squid 代理服务
  • k8s--etcd - 详解
  • 3peak DCDC转换芯片选型列表