如何解析没有括号的表达式?

时间:2016-05-29 11:05:52

标签: c++ algorithm parentheses

任何人都可以帮我解决这个问题吗?

我被赋予了一个字符串,这是一个没有任何括号的表达式。 我必须计算出有多少结果。

例如,输入字符串:1 + 3 * 4,它可以是(1 + 3)* 4 = 16或1+(3 * 4)= 13,因此有两个结果。我必须输出2。

例如两个,输入字符串:3 + 4 * 1,它可以是(3 + 4)* 1 = 7或3+(4 * 1)= 7所以有一个结果。我必须输出1。

运算符包含+, - ,*,&,|。 每个操作数的范围在1到100之间。

我认为问题类似于矩阵链乘法问题(在不同的地方放置括号)。

但我仍然不知道如何处理这个问题......

1 个答案:

答案 0 :(得分:-1)

  1. 解析输入字符串。算上数字。
  2. 使用1和0构建两个组合行。第一行中的一个告诉该数字在它之前是否有一个左括号,在第二行之后 - 在它之后。 条件: a)第一个支架必须打开; b)每个数字周围只能有一个括号(关闭或打开)。因此,您必须检查具有相同索引的每一行中的1个事件,如果您找到任何一个,则跳过该组合; c)1的数量必须等于零的数量。
  3. 如果您的raws传递了条件,请使用put括号重写您的字符串并将其转换为波兰语反转符号。
  4. 执行波兰表示法并将结果写入集合或列表。 我不能告诉你更多关于3和4但你可以在网上找到算法。 如果你必须解析(('s或))',你必须加上括号而不是一些。