【发布时间】:2026-02-09 21:45:01
【问题描述】:
本论坛中是否有人尝试解决 ACM 编程问题http://acm.mipt.ru/judge/problems.pl?browse=yes&problem=024?这是 ACM MIPT 中较简单的问题之一,目标是评估由 +、-、* 和括号组成的表达式。尽管看起来很简单,但我无法让我的解决方案被接受,显然,因为其中一个测试用例表达式有一个未在问题中说明的运算符。我什至添加了对除法 ('/') 的支持,但这也无济于事。关于需要支持哪些其他运营商的任何想法?仅供参考,我的程序会在处理之前从输入中删除所有空格,这样空格就不会成为问题。问题中没有说明但需要注意的事项?
【问题讨论】:
-
“显然”?你是怎么得出这个结论的?你支持一元减号吗?
-
你是怎么处理的?我怀疑这并不像看起来那么简单 - 运算符的评估顺序以及维护堆栈并不是微不足道的(尽管也不是非常困难)
-
@phant0m - 是的,我支持一元减号 - 我使用您自己的示例表达式并使用问题陈述中给出的示例对其进行了验证。我添加了一行验证来检查我没想到的运算符 - 使用该行,我得到了解决方案的运行时错误。删除该行后,我得到了错误的答案(猜测是因为如果运算符不是 +、- 或 * 之一,我的代码默认为 '/' 运算符)
-
@amit - 是的,我使用了堆栈方法 - 每个堆栈用于运算符,1 个用于操作数。在评估表达式之前,我最初会识别一元减号并将它们转换为自定义运算符“~”。
-
@so1:请在您的答案(使用编辑选项)中提供您的解决方案的简短说明(可选地使用代码本身),很可能有一些您没有想到的极端情况 -我们将能够帮助您找到它。
标签: ruby algorithm arithmetic-expressions