SP8106 ACPC10C - Normalized Form

题目描述

布尔表达式可以用析取范式或合取范式表示。在析取范式中,表达式由一个或多个子表达式通过逻辑“或”连接构成,其中每个子表达式都用合取范式书写。反之,合取范式中的表达式是通过逻辑“与”将多个按析取范式书写的子表达式连接在一起。 AND/OR 树是一种图形化的表示方法,用于描述布尔表达式的析取或合取范式。由于范式中子表达式的形式交替出现,AND/OR 树的子树会根据它们的深度交替成为 AND 树或 OR 树。比如,布尔表达式 \((A (B C)) (D E)\) 在第一层(最顶层)和第三层是 AND 树。 请编写一个程序来计算给定的 AND/OR 树表达式的值。

输入格式

你的程序将针对一个或多个测试用例进行测试。每个测试用例占一行,长度不超过 32,000 个字符,格式如下: \[ (E_1 \ E_2 \ \ldots \ E_n) \] 其中 \(n > 0\),每个 \(E_i\) 可以是 T(代表真)、F(代表假),或者是一个按照相同格式的子表达式。 最深的一层树为 AND 树。最后一个测试用例之后会以一行 `()` 作为结束标记。

输出格式

对于每个测试用例,输出如下格式的结果: `k. E` 其中 k 表示测试用例的编号(从 1 开始),E 是根据该测试用例表达式的求值结果为 true 或 false。 **本翻译由 AI 自动生成**