当前位置: 首页 > 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.hskmm.com/?act=detail&tid=10887

相关文章:

  • 流行的 3D 文件格式及其用途指南
  • CentOS7.9上安装MySQL8.4
  • 铁头山羊stm32-HAL库 - 实践
  • 2025CSP-S初赛游记
  • JBoltAI框架:企业级AI开发的革新路径与行业实践 - 那年-冬季
  • JBoltAI:重塑视频创作,开启零门槛智能混剪新时代 - 那年-冬季
  • 深入解析:手搓一个 DELL EMC Unity存储系统健康检查清单
  • Vscode + Latex指南
  • 线程池未争取关闭导致的一个bug
  • kafka创建topic
  • WPS 2025最新版EXE
  • OpenCV-图像通道提取与处理
  • Mac环境安装Nginx指南实录
  • csp2025
  • Ai元人文:价值共生时代的技术哲学构想之宣言
  • 完整教程:TruckSim与Matlab-Simulink联合仿真(一)
  • N皇后问题(DFS)
  • 2025csp初赛
  • PostGIS 介绍(2)--PostGIS 参考
  • Java编译全过程解密:从源码到机器码的奇幻之旅
  • 第一节计算机硬件基本组成
  • PyTorch深度学习实战【11】之神经网络的学习和训练 - 详解
  • 深搜广搜(DFS、BFS)
  • android studio发现设备立刻就掉
  • 见证语音领域 GPT-3 时刻!小米开源端到端语音模型 MiMo Audio;Xbox上线游戏助手,实时游戏理解+语音交互丨日报
  • go语言学习之基本数据类型转字符串
  • DeepLearning-LoRA 及其先进变体技术指南
  • 成功没有奇迹,只有积累----Bruce Lee
  • strtol() 函数 - 字符串转长整数(long int)
  • TypeScript学习