在我们的系统中,我们有语法定义的表达式:
s ---> e
e ---> (e) | MAX(e, e) | IF(b, e) | IF(b, e, e) | e + e | number | variable
b ---> e | e op e | b AND b | b OR b
op --> > | < | >= | <=
其中变量是预定义的并且已赋值。每个表达式都有一个变量列表,例如
B1 = 4,
B2 = 5,
B5 = 2,
B6 = 2,
C1 = 2,
C4 = 3,
D1 = 2 etc...
前导字母是&#39;组&#39;该变量属于。这些变量被置为复选框&#34;问题&#34;对于用户,如果未选中它们,则表达式中的值为0,否则它们具有指定的值。可以安全地假设此列表中的所有内容都用在表达式中。
我们的问题:给定一组选定的变量,企业希望我们为他们提供一组未选择的变量,如果选择这些变量可用于增加表达式的值。例如,在他们的表达式中常见的是MAX(B1 + B2 + B3 + C1,5),如果我们已经使用B1 + B2达到了值5,他们就不想显示C1的复选框+ B3。
有没有办法在不尝试所选变量的每个组合的情况下生成此列表?至少,有一种简单的方法可以生成“&#39;组”列表。变量(B,C,D等)包含至少一个会增加表达式值的变量吗?
在某些情况下,只有一个组有超过150个变量。
示例表达式(它们比这更大,更复杂):
IF(B1 AND B2, 6, IF(B1, 2, IF(B2, 2))) + MAX(C1 + C2 + D1, 3) + E1 + E2 + F1 + F2 + F3