/ Vijos / 题库 /

S表达式

S表达式

时间限制:1秒  内存限制:256M


【问题描述】

  LISP语言使用一种 S 表达式来表示程序和数据。一个 S 表达式可以简单地定义为:

  1)、单个字母(大写或小写)是一个 S 表达式;
  2)、如果 \(u\) 和 \(v\) 是 S 表达式,则 \((u,v)\) 也是 S 表达式。

  例如,根据上述定义的第 1 条,单个字母 \(a,c \)和 \(m\) 分别是一个合法的 S 表达式。而根据第 2 条,\((a,c)\) 和 \(((a,c),m)\) 也是合法的 S 表达式。

  你的任务是:根据定义,判断输入的表达式是否为合法的 S 表达式。

【输入格式】

  第一行一个整数 \(n\),表示待判别的表达式个数。
  以下 \(n\) 行,每行一个字符串,表示待判别的表达式。字符串的前或后可能会有多余的空格,每行不超过 72 个字符。

【输出格式】

  第一行输出表达式的个数。
  以下 \(n\) 行,每行对应一个判别信息。如果对应的表达式是合法的 S 表达式,则输出“Yes”,否则输出“No”。

【输入输出样例】

 Input

6
a
b
(a,b)
((a,b),(c,d))
 (ab,c)
    [a,b] 

 Output

6
Yes
Yes
Yes
Yes
No
No

【数据说明】

  对于 \(100\%\) 的数据 表达式长度不超过100。

【来源】

  Mr.he

信息

ID
2416
难度
(无)
分类
数据结构 | 点击显示
标签
(无)
递交数
0
已通过
0
通过率
?
上传者