2024年华为OD机试真题-符号运算-(C++/Java/python)-OD统一考试(C卷D卷)

  2024华为OD机试真题目录-(B卷C卷D卷)-【C++ Java Python】    

题目描述

给定一个表达式,求其分数计算结果。

表达式的限制如下:

  • 所有的输入数字皆为正整数(包括0)
  • 仅支持四则运算(+-*,/)和括号
  • 结果为整数或分数,分数必须化为最简格式(比如6,3/4,7/8,90/7)
  • 除数可能为0,如果遇到这种情况,直接输出"ERROR"
  • 输入和最终计算结果中的数字都不会超出整型范围
  • 用例输入一定合法,不会出现括号匹配的情况

输入描述

字符串格式的表达式,仅支持+-*,/,数字可能超过两位,可能带有空格,没有负数

长度小于200个字符

输出描述

表达式结果,以最简格式表达

  • 如果结果为整数,那么直接输出整数
  • 如果结果为负数,那么分子分母不可再约分,可以为假分数,不可表达为带分数
  • 结果可能是负数,符号放在前面

用例1

输入

1 + 5 * 7 / 8

输出

43/8

说明

用例2

输入

1 / (0 - 5)

输出

-1/5

说明

符号需要提到最前面

用例3

输入

1 * (3*4/(8-(7+0)))

输出

12

说明

注意括号可以多重嵌套

解题思路


关于符号运算的题目,需要用到两个栈,一个栈用来存符号op_stack,另一个栈用来存数值num_stack;

解题过程是,遍历算式的每一个字符,如果是字符为数字,则暂时存入一个缓存数字

的栈str_stack,防止整数是多位的情况。

如果遍历到字符为+-*/,需要进行两个操作:

1.将str_stack中的字符拿出,组成整数,存入num_stack;

2.比较当前符号和op_stack栈顶符号的优先级,如果op_stack不为空,且op_stack栈顶符号优先级>=当前符号,则先令栈顶符号出栈,再从num_stack中出栈两个数,与栈顶符号计算出结果后,放入num_stack中。否则,将操作符入栈。

如果遍历到(时,直接将符号放入op_stack栈中,之后遇到除)之外的字符,和前面的操作步骤一样,当遇到)时,要将op_stack栈中的符号出栈,进行计算,直至遇到(时结束,将(出栈;

本题存在分数,需要将分数定义为结构体,struct fen{int son; int fa};将分数

首先,在选择服务中心的最佳位置时,我们需要考虑各种因素,包括人口密度、交通便利性、基础设施和竞争对手等。对于华为OD项目来说,我会推荐选址在人口密度相对较高的城市中心地带。这样可以确保服务中心能够覆盖到更多的用户群体,提高服务的便利性和覆盖面。 其次,交通便利性也是选择最佳位置的重要考量因素。一个位于交通枢纽地带的服务中心可以更容易地接触到周围城市的用户,减少用户的前往成本和时间。同时,也方便快速调度和配送产品,提高服务的效率和时效性。 此外,基础设施的完善也是一个重要的考虑因素。一个服务中心应该有稳定的电力、通讯和网络设施,以保证服务的持续性和稳定性。另外,周边商业设施和生活设施的配套也能吸引更多的顾客和员工,提高服务中心的吸引力和竞争力。 最后,对竞争对手的考虑也至关重要。在选择服务中心的位置时,需要做好竞争对手的地域分析,避免选择在竞争对手的聚集地带,同时也要考虑如何在竞争对手密集的区域提供更优质的服务和更吸引人的特色,以获得竞争优势。 综上所述,选择服务中心最佳位置需要全面考虑各种因素,包括人口密度、交通便利性、基础设施和竞争对手,这样才能确保服务中心能够更好地为用户提供服务,同时也能提高企业的竞争力和影响力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dijkstra2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值