12
将括号和方括号评估为整数
编写一个程序,()[]使用满足以下要求的四个字符组成的字符串: 每个左括号(都有一个匹配的右括号)。 每个左括号[都有一个匹配的右括号]。 配对的括号和方括号不会重叠。例如[(])是无效的,因为匹配括号没有完全包含在匹配括号中,反之亦然。 第一个和最后一个字符是一对匹配的括号或括号。所以([]([]))和[[]([])]是有效的,但[]([])不是。 (输入格式的语法为<input> ::= [<input>*] | (<input>*)。) 每对匹配的括号和括号都得出一个非负整数: 匹配括号内的对值全部相加。空匹配()具有价值0。 匹配括号内的对值全部相乘。空匹配[]具有价值1。 (一个数字的总和或乘积是相同的数字。) 例如,([](())([][])[()][([[][]][][])([][])])可以细分并评估为9: ([](())([][])[()][([[][]][][])([][])]) <input> (1 (0 )(1 1 )[0 ][([1 1 ]1 1 )(1 1 )]) <handle empty matches> (1 0 2 0 [(1 1 1 )2 ]) <next level of matches> (1 0 2 0 [3 …