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

用扑克牌计算24点

image
输入样例:
2 3 12 12
输出样例:
((3-2)*12)+12

ac代码

include<bits/stdc++.h>

using namespace std;

bool is24(double x)
{
return fabs(x-24)<1e-6;
}
char op[4]={'+','-','','/'};
double result(double x,double y,char op)
{
if(op'+')return x+y;
if(op
'-')return x-y;
if(op=='
')return x*y;
if(op=='/')return x/y;
}
// 只需要替换这5个函数,其他不动!
double m1(double a,double b,double c,double d,char op1,char op2,char op3)
{
double x,y,z;
x=result(a,b,op1);
y=result(x,c,op2);
z=result(y,d,op3);
return z;
}
// m2 恢复正确逻辑!
double m2(double a,double b,double c,double d,char op1,char op2,char op3)
{
double x,y,z;
x=result(a,b,op1);
y=result(c,d,op3);
z=result(x,y,op2);
return z;
}
// m3 恢复正确逻辑!
double m3(double a,double b,double c,double d,char op1,char op2,char op3)
{
double x,y,z;
x=result(b,c,op2);
y=result(a,x,op1);
z=result(y,d,op3);
return z;
}
// m4 恢复正确逻辑!
double m4(double a,double b,double c,double d,char op1,char op2,char op3)
{
double x,y,z;
x=result(b,c,op2);
y=result(x,d,op3);
z=result(a,y,op1);
return z;
}
// m5 恢复正确逻辑!
double m5(double a,double b,double c,double d,char op1,char op2,char op3)
{
double x,y,z;
x=result(c,d,op3);
y=result(b,x,op2);
z=result(a,y,op1);
return z;
}
int cal(int a,int b,int c,int d)
{
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
for(int k=0;k<4;k++)
{
char op1=op[i],op2=op[j],op3=op[k];
if(is24(m1(a,b,c,d,op1,op2,op3)))
{
printf("((%d%c%d)%c%d)%c%d",a,op1,b,op2,c,op3,d);
return 1;
}
if(is24(m2(a,b,c,d,op1,op2,op3)))
{
printf("(%d%c%d)%c(%d%c%d)",a,op1,b,op2,c,op3,d);
return 1;
}
if(is24(m3(a,b,c,d,op1,op2,op3)))
{
printf("(%d%c(%d%c%d))%c%d",a,op1,b,op2,c,op3,d);
return 1;
}
if(is24(m4(a,b,c,d,op1,op2,op3)))
{
printf("%d%c((%d%c%d)%c%d)",a,op1,b,op2,c,op3,d);
return 1;
}
if(is24(m5(a,b,c,d,op1,op2,op3)))
{
printf("%d%c(%d%c(%d%c%d))",a,op1,b,op2,c,op3,d);
return 1;
}
}
}

    }return 0;

}
int main()
{
int a[4];
cin>>a[0]>>a[1]>>a[2]>>a[3];
sort(a,a+4);
int ok=0;
do{
if(cal(a[0],a[1],a[2],a[3]))
{
ok=1;
break;
}
}while(next_permutation(a,a+4));
if(!ok)cout<<-1<<endl;
return 0;

}
思路
暴力枚举
1.处理每种括号情况
m1-m5
2.处理精度问题is24函数判断是否到达24
3,暴力枚举每种符号情况
4.暴力枚举每种排列情况(next_permutation)

http://www.jsqmd.com/news/636474/

相关文章:

  • ECharts实战:如何精准控制Y轴刻度分段与自定义标签映射
  • 主题巴巴主题源码 合辑打包下载+主题巴巴SEO插件 _ WordPress主题模版
  • 小白程序员必看:收藏这份Agent学习指南,轻松入门大模型世界
  • 一键生成几百节课程讲解文案的SKILL
  • 卡梅德生物技术快报|多肽文库合成和筛选全流程技术实现(含参数与质控)
  • WarcraftHelper:魔兽争霸3终极优化指南,让经典游戏完美适配现代系统
  • 2026年贵阳车牌识别系统与智慧停车完全指南:五大品牌深度横评与官方联系方式速查 - 精选优质企业推荐榜
  • 培养业务洞察力:技术人突破天花板的钥匙
  • Stable Diffusion+LoRA工作站教程:Pixel Fashion Atelier Leather-Dress集合调用
  • 小语言模型基础:适合轻量化场景的 AI
  • 超流体宇宙论实战-自备干粮的伽马射线
  • 洛谷官方题单[Java版题解]--【入门1】顺序结构
  • 从零入门性能测试:理论+JMETER实操,看完就能上手呈
  • C语言:排序(二)
  • AIAgent仿真环境搭建终极清单(2024Q3最新):覆盖Unity ML-Agents v4.0、Isaac Sim 2024.1、Meta’s Habitat 3.2 兼容矩阵与迁移路径
  • Filament引擎异步渲染实战:从API调用到GPU指令,你的代码是如何被‘翻译’的?
  • 手把手教你用PyTorch做图像分类:5种服装识别,代码全中文注释
  • 用Python实战股价预测:从KNN到LSTM,哪种模型更适合你的股票分析?
  • 2026年贵阳车牌识别系统官方联系方式与智慧停车深度横评|无人值守停车场道闸一体化解决方案 - 精选优质企业推荐榜
  • 探索OpCore Simplify:如何用智能化工具应对黑苹果配置挑战
  • 20252329 2025-2026-2 《Python程序设计》实验2报告
  • 手把手教你让FAST_LIO用上Livox HAP:从驱动livox_ros_driver2到消息适配的保姆级教程
  • 从ChatUI到AgentOS:下一代AIAgent交互范式迁移,3类企业已紧急重构前端架构
  • 记录复现多模态大模型论文OPERA的一周工作藕
  • 如何用Foldseek解决蛋白质结构分析难题:从新手到专家的完整指南
  • 接入工具代码讲解
  • 2026贵阳车牌识别系统官方联系方式与智慧停车品牌深度横评|无人值守停车解决方案对标指南 - 精选优质企业推荐榜
  • 2026物联网终端产业观察:AI端侧算力、5G RedCap与渠道下沉的规模化落地 - 格行官方招商总部
  • 经典算法:打家劫舍(动态规划 + 回溯求最优解)C++ 超详细解析
  • AIAgent架构中的多目标优化难题(工业级Agent系统92%失败源于此)