2016-05-29 2 views
0

Может ли кто-нибудь помочь мне с этой проблемой?Как разобрать выражение без круглых скобок?

Мне была предоставлена ​​строка, которая является выражением без круглых скобок. Я должен рассчитать, сколько результатов может быть.

Например, один, строка ввода: 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

Не используйте форматирование цитаты для текста, который не цитируется. – EJP

+0

Глядя на ваш второй пример, у меня возникло ощущение, что вам нужно будет оценить все возможности. –

+0

Когда вы говорите «все возможности», это то, что * строка группирует * вещь или * порядок приоритета оператора * вещь? – Galik

ответ

-1
  1. Разобрать строку ввода. Считайте цифры.
  2. Постройте два комбинационных ряда с единицами и нулями. Один в первой строке сообщает, перед номером перед ним находится открывающая скобка, во второй строке - после нее. Условия: a) первый кронштейн должен быть открыт; b) у каждого номера может быть только одна скобка вокруг него (закрытие или открытие). Итак, вы должны проверить наличие 1 в каждой строке с тем же индексом и пропустить комбинацию, если вы ее нашли; c) число единиц должно быть равно числу нулей.
  3. Если ваши сырьевые материалы передают условия, перепишите строку с помощью скобок и преобразуйте ее в инвертированную нотацию.
  4. Выполнение латинской нотации и запись результата в набор или список. Я не могу рассказать больше о 3 и 4, но вы можете найти алгоритм в сети. Если вам нужно разобрать ((или)), вы должны поместить числа скобок вместо единиц.
+1

ОП указывает, что круглых скобок нет. Поэтому ваш второй пункт кажется неправильным. –

+0

Я имею в виду, он должен сочетать все варианты, которые проходят условия. –

Смежные вопросы