Задача о расстановке знаков в выражении — различия между версиями
RDmitriy (обсуждение | вклад) |
Proshev (обсуждение | вклад) |
||
| Строка 38: | Строка 38: | ||
* Кормен, Т., Лейзерсон, Ч., Ривест, Р., Штайн, К. Глава 15. Динамическое программирование // Алгоритмы: построение и анализ = Introduction to Algorithms / Под ред. И. В. Красикова. — 2-е изд. — М.: Вильямс, 2005. — 1296 с. — ISBN 5-8459-0857-4 | * Кормен, Т., Лейзерсон, Ч., Ривест, Р., Штайн, К. Глава 15. Динамическое программирование // Алгоритмы: построение и анализ = Introduction to Algorithms / Под ред. И. В. Красикова. — 2-е изд. — М.: Вильямс, 2005. — 1296 с. — ISBN 5-8459-0857-4 | ||
* [http://ru.wikipedia.org/wiki/Динамическое_программирование Википедия] | * [http://ru.wikipedia.org/wiki/Динамическое_программирование Википедия] | ||
| + | |||
| + | [[Категория:Дискретная математика и алгоритмы]] | ||
| + | [[Категория:Динамическое программирование]] | ||
Версия 23:33, 16 января 2012
Задача о расстановке знаков в выражении — задача о нахождении максимального значения выражения, полученного расстановкой знаков и скобок в последовательности .
Содержание
Решение
Данная задача решается с использованием принципа оптимальности на подотрезке. Введём матрицу размером , где будет равен максимальному значению, достигаемому на подотрезке .
Получаем следующие соотношения:
Вычислим элементы таблицы , тогда ответом на задачу будет значение .
Реализация
// d - матрица как в описании; a - последовательность из n элементов; i, j, k - счётчики
for i := 1 to n do
d[i][i] := a[i];
for i := n - 1 downto 1 do
for j := i + 1 to n do
for k := i to j - 1 do
d[i][j] := max(d[i][j], max(d[i][k] + d[k+1][j], d[i][k] * d[k+1][j]));
write(d[1][n]); // вывод ответа
Пример
Пусть дана последовательность 2, 1, 1, 2. Таблица для неё будет выглядеть так:
| j = 1 | j = 2 | j = 3 | j = 4 | |
| i = 1 | 2 | 3 | 4 | 9 |
| i = 2 | 0 | 1 | 2 | 4 |
| i = 3 | 0 | 0 | 1 | 3 |
| i = 4 | 0 | 0 | 0 | 2 |
Источники
- Кормен, Т., Лейзерсон, Ч., Ривест, Р., Штайн, К. Глава 15. Динамическое программирование // Алгоритмы: построение и анализ = Introduction to Algorithms / Под ред. И. В. Красикова. — 2-е изд. — М.: Вильямс, 2005. — 1296 с. — ISBN 5-8459-0857-4
- Википедия