Algorithm 布尔括号算法

Algorithm 布尔括号算法,algorithm,recursion,dynamic-programming,Algorithm,Recursion,Dynamic Programming,我正在研究破解编码面试的以下算法: 给定一个布尔表达式,其中包含符号{true、false和, 或者,xor},计算将表达式插入括号的方法数,如 它的评估结果是正确的 作者详细介绍了在每个运算符字符处放置括号的递归解决方案。例如,若表达式为1^0^0 | 1,则放置在char=1处的值为1^0^0 | 1 她对从1到n的每个运算符char i执行此操作,其中两个表达式是从0到i和从i+1到n,然后对每个子字符串调用递归函数 这是我不明白的。例如,1^0^0 | 1此表达式将从该过程中排除。为什么

我正在研究破解编码面试的以下算法:

给定一个布尔表达式,其中包含符号{true、false和, 或者,xor},计算将表达式插入括号的方法数,如 它的评估结果是正确的

作者详细介绍了在每个运算符字符处放置括号的递归解决方案。例如,若表达式为1^0^0 | 1,则放置在char=1处的值为1^0^0 | 1

她对从1到n的每个运算符char i执行此操作,其中两个表达式是从0到i和从i+1到n,然后对每个子字符串调用递归函数

这是我不明白的。例如,1^0^0 | 1此表达式将从该过程中排除。为什么呢?这不也很重要吗?

1^0^0 | 1与1^0^0 | 1相同

因为您提到了parantesses是递归插入的,所以没有遗漏任何内容:

1 ^ 0 ^ 0 | 1 | +--(1) ^ (0 ^ 0 | 1) | +--(1) ^ ((0 ^ 0) | 1) | +--(1) ^ (0 ^ (0 | 1)) | +--(1 ^ 0) ^ (0 | 1) | +--(1 ^ 0 ^ 0) | (1) +--((1 ^ 0) ^ 0) | (1) +--(1 ^ (0 ^ 0)) | (1) ← here it is
假设左关联性可以通过过程1^0^0 | 1->1^0^0 | 1获得,如果允许冗余括号,则答案为零或无限。