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

UVa 549 Evaluating an Equations Board

题目描述

题目要求判断是否能够使用资源区中的部分或全部骰子,构造一个合法的数学表达式,使其结果等于目标数。表达式必须使用一位数(即000999的数字),可以使用括号改变运算顺序,运算符为+++−-×\times×。每个骰子上的符号只能使用一次。

输入格式

输入包含多组测试用例,每组两行:

  • 第一行:资源区的骰子符号(共131313个字符,由数字和运算符组成)。
  • 第二行:目标数(一位或两位数字,不含前导零)。
    输入以文件结束符(EOF\texttt{EOF}EOF)终止。

输出格式

对于每组测试用例,输出一行solutionno solution

样例

输入

999999+++++ 54 0149++- 7+xx 56 0149++- 7+-- 56

输出

solution no solution

题目分析

本题的核心是搜索所有可能的表达式,判断是否存在一个等于目标数的表达式。

搜索策略

  • 将资源区的骰子分为数字和运算符两类。
  • 表达式是数字和运算符交替的序列,且以数字开头和结尾。运算符数量比数字数量少111
  • 枚举所有可能的数字序列和运算符序列的组合,检查计算值是否等于目标数。
  • 由于数字和运算符数量有限,可以使用回溯法生成所有可能的表达式。

表达式求值

由于表达式不含括号,但题目说明可以使用括号,实际上运算符优先级需要处理。然而,在回溯法中,可以通过递归生成表达式树或使用逆波兰表达式(RPN\texttt{RPN}RPN)求值。参考代码使用栈模拟后缀表达式求值,但生成的是中缀表达式?实际上,表达式字符数组按顺序存放数字和运算符,然后使用栈计算时,未考虑运算符优先级,隐含了从左到右的顺序。这意味着它假设表达式是严格从左到右计算(即无优先级)。但题目允许使用括号改变顺序,因此需要更复杂的生成方式。

简化处理

参考代码通过枚举所有可能的数字和运算符排列,并假设表达式按顺序从左到右计算。这实际上对应于所有运算符优先级相同的情况,但题目允许括号,因此这种搜索可能遗漏解。然而,由于数字和运算符数量较少,且目标数不大,这种简化在本题中可能是可接受的。

复杂度分析

数字最多131313个,运算符最多666个,枚举所有排列可行。

代码实现

// Evaluating an Equations Board// UVa ID: 549// Verdict: Accepted// Submission Date: 2017-08-04// UVa Run Time: 0.010s//// 版权所有(C)2017,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;intusedOperands[20],usedOperators[20],nGoal,exist,debug=0;string resource,goal,operands,operators;charexpression[20];intevaluate(intnChosen){stack<int>result;for(inti=0;i<nChosen;i++){if(isdigit(expression[i]))result.push(expression[i]-'0');else{inta=result.top();result.pop();intb=result.top();result.pop();switch(expression[i]){case'+':result.push(a+b);break;case'-':result.push(b-a);break;case'x':result.push(a*b);break;}}}returnresult.top();}voidbacktrack(intnChosen,intnOperands,intnOperators){if(exist)return;if(nOperands==1){if(debug){for(inti=0;i<nChosen;i++)cout<<expression[i];cout<<'\n';}if(evaluate(nChosen)==nGoal){exist=1;return;}}if(nOperators>=(nOperands-1)){for(inti=0;i<operands.length();i++){if(!usedOperands[i]&&operands[i]!=expression[nChosen]){usedOperands[i]=1;expression[nChosen]=operands[i];backtrack(nChosen+1,nOperands+1,nOperators);if(exist)return;usedOperands[i]=0;}}}if(nOperands>=2){for(inti=0;i<operators.length();i++){if(!usedOperators[i]&&operators[i]!=expression[nChosen]){usedOperators[i]=1;expression[nChosen]=operators[i];backtrack(nChosen+1,nOperands-1,nOperators-1);if(exist)return;usedOperators[i]=0;}}}}intmain(intargc,char*argv[]){cin.tie(0),cout.tie(0),ios::sync_with_stdio(false);intcases=0;while(cin>>resource>>goal){cases++;nGoal=stoi(goal);operands.clear(),operators.clear();sort(resource.begin(),resource.end());for(autoc:resource){if(isdigit(c))operands+=c;elseoperators+=c;}exist=0;memset(usedOperands,0,sizeof(usedOperands));memset(usedOperators,0,sizeof(usedOperators));memset(expression,0,sizeof(expression));backtrack(0,0,operators.size());cout<<(exist?"solution":"no solution")<<'\n';}return0;}
http://www.jsqmd.com/news/1048885/

相关文章:

  • OpenAI Codex实战指南:半年中高级开发者深度使用经验
  • 手把手构建可运行AI Agent:从零到本地交互式助手
  • Xiaomusic深度架构解析:智能语音音乐播放器的分布式实现与优化指南
  • 2026年扬州本地全屋定制可丽芙官方授权商家盘点,哪家真的值得约展厅 - 十大品牌排行榜
  • 在普通电脑上部署开源多模态大模型实操指南
  • 3分钟解锁网易云音乐隐藏功能:BetterNCM安装器使用全解析
  • 电瓶车托运电池 2026合规包装指南 - 快递物流资讯
  • 2026年GEO加盟贴牌为何成创业优选?爱搜索源头厂家深度解读 - 品牌报告
  • 2026年6月热门更新|杭州亨得利手表维修后保修多久?一文掌握质保与联保要点 - 亨得利官方售后
  • 大连登报怎么线上办理?2026最新办理流程大连登报怎么线上办理?2026最新办理流程 - 速递信息
  • 2026 武汉税务预警频发!如何正确处置?方式与合规避坑指南! - 招小财
  • TI-RTOS Kernel(SYS/BIOS) HAL实战:从通用API到设备特定功能的进阶之路
  • 2026太和装修,刚需房业主如何做到不超预算、不降品质——一位万达二号院业主的真实经历 - 装企自媒体训练营辉哥
  • 计算机专业出身的我,突然就不羡慕大厂程序员了
  • NetBackup Socket (25) 连接故障排查:从端口监听异常到进程启动的深度诊断
  • 发票查验平台验证码识别实战:从接口调用到精准识别的全流程解析
  • Windows 10/11终极指南:通过WSABuilds解锁完整Android体验
  • 微信小程序摄影比赛投票发起教程|2026 云众评选3步搞定 - 微信投票小程序
  • 全国摄影艺术大赛微信投票发起方法和步骤,2026云众评选 制作教程 - 微信投票小程序
  • 视频提取音频后有什么用?2026音频二次创作铃声制作BGM素材全攻略 - 科技大爆炸
  • 2026太和装修,设计落地与材料溯源——一位祥和天境业主的全案体验 - 装企自媒体训练营辉哥
  • 2026 年 6 月爱彼官方 售后维修网点实地探访验证完整调研报告:深耕腕表售后品质建设,专属客户服务体验迎来全方位全新升级 - 亨得利中国服务中心
  • 流媒体安全防护全链路规范:从RCE攻击防御到供应链安全管控 摘要: 本文系统阐述了流媒体平台全链路安全防护方案,重点覆盖RCE攻击防御体系。内容包含:实时监控指标体系(进程/流量/文件行为)、全链路日
  • 终极SPT-AKI存档编辑器指南:解放塔科夫单机体验的5个核心技巧
  • 终极指南:3分钟解决Windows热键冲突检测难题的完整方案
  • SFDP:解锁串行Flash的通用“说明书”
  • 全网视频音频资源一键下载:免费开源工具res-downloader终极指南
  • 西南交通大学考研辅导班TOP推荐:核心指南与深度拆解 - michalwang
  • 2026 年 6 月最新资讯:天梭国内全部官方维修门店地址全面更新公示,专属全国服务热线同步上线运行 - 亨得利中国服务中心
  • Mod Organizer 2:终极游戏模组管理解决方案,新手快速上手指南