#P2372. D++ Again
D++ Again
题目描述
由我们三月竞赛的参与者完善的D++语言仍在持续改进。其创造者试图让语法尽可能清晰,以便未来编程更加简便。
当然,一些基本规则是不会改变的。你的程序需要检查代码是否遵守有关括号和注释的规则。
一个正确的D++程序文本包含符号部分、算术表达式和注释。注释可以出现在任何位置,并且可以包含任何符号。注释总是由一对符号“(”开始,由一对符号“)”结束。每个注释都必须正确闭合。在D++中,算术表达式总是以“(”开始,以“)”结束,并且可以包含以下任何符号:“=+-*/0123456789)(",当然也可以包含注释。算术表达式中不允许有空格,但可以出现换行符。在算术表达式中可能会遇到嵌套括号,此时这些括号必须是平衡的。这意味着“((1))”和“(23))((+)”都不是正确的算术表达式。一个算术表达式只有在括号放置正确时才是正确的。最后,程序文本的其余部分(从初始程序文本中剔除所有注释和算术表达式后的结果)可以包含除“(”和“)”之外的任何符号。
我们要特别指出的是,除了在算术表达式中,空格可以出现在程序文本的任何位置。
输入
标准输入中包含一些文本。文本中的符号数量不超过10000个。文本中可能包含拉丁字母、数字、括号、算术运算符号以及“换行符”和“回车符”。
输出
如果输入的文本是一个正确的D++程序,你的程序应向输出写入“YES”,否则写入“NO”。
Hello, here is a sample D++ program. It contains some arithmetical expressions like
(2+2=4), (2+-/*) and ((3+3)*3=20(*this is not true, but you don't have to verify it :-) *)+8)
(* the closing bracket in the previous comment is also in order, since this bracket
does not belong to any arithmetical expression*)
YES
来源
乌拉尔国立大学2000年10月内部竞赛,初级组