1789:算24

news/2025/9/20 18:15:11/文章来源:https://www.cnblogs.com/1a2s/p/19102704

题目

总时间限制: 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.mzph.cn/news/908489.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Proxy 库解析(二)

refl meta template <bool IsDirect, class R> struct refl_meta {template <class P>requires(IsDirect)constexpr explicit refl_meta(std::in_place_type_t<P>): reflector(std::in_place_type&l…

【Python3教程】Python3高级篇之JSON材料解析

【Python3教程】Python3高级篇之JSON材料解析2025-09-20 18:04 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

大模型服务之下的新旧政务智能系统比较 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

流行的 3D 文件格式及其用途指南

了解 3D 文件格式的重要性 三维 (3D) 技术的市场既广泛又复杂,应用范围从电影后期制作和产品原型制作到虚拟现实 (VR) 和增强现实 (AR) 游戏。该技术各种用例不可或缺的一部分是 3D 文件格式,它决定了 3D 数据…

CentOS7.9上安装MySQL8.4

CentOS 7 已在 2024 年 6 月 30 日结束生命周期 (EOL),官方源已停止维护! CentOS 7 已在 2024 年 6 月 30 日结束生命周期 (EOL),官方源已停止维护! CentOS 7 已在 2024 年 6 月 30 日结束生命周期 (EOL),官方源已…

铁头山羊stm32-HAL库 - 实践

铁头山羊stm32-HAL库 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco",…

IDEA编译Maven任务后target目录没有class

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025CSP-S初赛游记

哈哈,在致知楼(逆天诡异滏阳楼)考的。

JBoltAI框架:企业级AI开发的革新路径与行业实践 - 那年-冬季

JBoltAI框架:企业级AI开发的革新路径与行业实践在人工智能与产业深度融合的当下,企业级AI开发框架正成为推动智能化转型的关键基础设施。JBoltAI作为面向Java技术生态的智能开发框架,通过模块化架构设计与多模型适配…

JBoltAI:重塑视频创作,开启零门槛智能混剪新时代 - 那年-冬季

JBoltAI:重塑视频创作,开启零门槛智能混剪新时代在当今这个视觉内容占据主导地位的时代,视频已成为信息传递、品牌宣传和创意表达的重要载体。然而,传统的视频制作过程往往伴随着高昂的专业门槛、漫长的时间投入以…

深入解析:手搓一个 DELL EMC Unity存储系统健康检查清单

深入解析:手搓一个 DELL EMC Unity存储系统健康检查清单pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas…

实用指南:Spring Boot 读取 YAML 配置文件

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

完整教程:AVL树(平衡二叉搜索树)

完整教程:AVL树(平衡二叉搜索树)2025-09-20 17:48 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !imp…

Vscode + Latex指南

引言 Overleaf编译大项目的时候总是失败,这时候就需要用到本地的latex了。 本地方案已经比较成熟,只是需要一点配置。 vscode安装一个扩展即可需要关闭拼写检查 打开设置-扩展-Latex加入一行"latex.linter.enab…

线程池未争取关闭导致的一个bug

前提 自己写了一个任务执行器TaskStarter,在SpringBoot启动时自动执行一些初始化任务。使用数据库来保证一些幂等操作。 为了防止任务执行过久或者执行过程中失去响应,每个任务执行时都需要启动一个异步的任务来更新…

kafka创建topic

kafka创建topiccd /data/kafka_2.13-2.8.0/bin/ 下 -- 创建 ./kafka-topics.sh --create \ --bootstrap-server ip:9092 \ --topic XXXX_topic \ --partitions 2 \ --replication-factor 1 \ --config retention…

【500 kHz-6 GHz“全频段通吃”神器】 ——成都恒利泰

【500 kHz-6 GHz“全频段通吃”神器】 ——成都恒利泰HT-BAL-0006SMG(兼容BAL-0006SMG)是一款纯手工微调的表贴宽带巴伦,单颗就能把广播、LTE、5G、Wi-Fi 6E、卫星、雷达等全部收入囊中。实测相位不平衡<1,幅度…

成都恒利泰——【5 MHz-1 GHz“信号分身术”神器】

成都恒利泰——【5 MHz-1 GHz“信号分身术”神器】Mini-Circuits H2TCP-2-10+(兼容TCP-2-10+)是一款超小型表贴2路功分器/合路器,单颗就能把整个广播、LTE、广电、ISM、LoRa、UHF RFID频段“一刀两断”或“合二为一…

WPS 2025最新版EXE

WPS Office是一站式办公服务平台 新升级,无广告,AI办公更高效 https://official-package.wpscdn.cn/wps/download/WPS_Setup_22529.exe 以下是2025最新版下载QWQ!

详细介绍:【智慧城市】2025年中国地质大学(武汉)暑期实训优秀作品(2):智慧城市西安与一带一路

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …