Жадный калкулятор
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [18.97.9.174] |
|
|
правила раздела Алгоритмы

Жадный калкулятор
|
Сообщ.
#1
,
|
|||||
|
|
Есть такая задачка: дано выражение, состоящие из чисел и знаков операция (+, -, /), необходимо в этом выражении расставить скобки, что бы результат получился максимальным. Например, если входные данные такие:
то результат должен быть примерно такой:
В общем, построил я две матрицы: max и min. В ячейке max[i,j] хранится максимальное значение, которое может получить выражение, которое начинается с i-ого числа и заканчивается j-им. Понятно, что в матрице min хранится минимальное значение. Ясно, что ответом на задачу является число max[1,n] (где n - количество чисел в исходном выражении). Вот только чего у меня не получается, так это по этим матрицам восстановить расположение скобок. Посоветуйте, как можно это сделать? Или какую дополнительную информацию нужно хранить вместе с этими матрицами? Заранее спасибо за ответ. |
|
Сообщ.
#2
,
|
|
|
|
вместе с каждым числом в етих матрицах надо хранить и позицию знака, который объединяет два выражения... (max[5,12] = 10000, pos[5,12] = 7, т.е., чтобы получить max необходимо подвыражение с 5 по 7 (=max[5,7]) умножить на подвыражение с 8 по 12 (=max[8,12])...).
Или просто при восстановлении проходить по всем возможным знакам, сравнивая результат max[5,i] =-*/ max[i+1,12] с найденным максимумом max[5,12]. |
|
Сообщ.
#3
,
|
|
|
|
Спасибо за подсказку, думаю мне этого хватит...
|