尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

1789:算24

1789:算24
📅 发布时间:2026/6/17 19:59: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;
}

相关新闻

  • 铁头山羊stm32-HAL库 - 实践
  • IDEA编译Maven任务后target目录没有class
  • 2025CSP-S初赛游记

最新新闻

  • PHP 双门双向门禁控制板实时监控源码
  • 寄快递怎么选更便宜?2026省钱技巧全攻略 - 快递物流资讯
  • Microchip嵌入式开发资源导航:从官方工具链到实战调试全指南
  • 3大突破性策略:让Perfetto性能分析从被动监控到主动优化的跨越式升级
  • 2026成都麒麟珠宝 Qeelin 葫芦回收:国风奢饰二手流通现状,出手渠道推荐 - 逸程
  • Windows虚拟显示器驱动终极指南:5分钟免费扩展你的桌面空间

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号