задачка с acm.uva.es :)
- From
- Ilia Kantor (2:5020/175.2)
- To
- Georgy Plechanov
- Date
- 2002-12-09T15:03:59Z
- Area
- RU.ALGORITHMS
From: "Ilia Kantor" <ilia@manual.ru>
Mon Dec 09 2002 12:38, Georgy Plechanov wrote to Slava Gorbanev:
AB>>>> Дана матрица 100х100 (ну или меньше) целых чисел от -127 до 127.
AB>>>> Необходимо найти в ней такой прямоугольник, чтобы сумма всех
AB>>>> чисел в нем была максимальна (из всех возможных таких
AB>>>> прямоугольников).
Перебираем все прямоугольники, состоящие из соседних строк
for(i=0;i<100;i++)
for(j=i;j<100;j++)
{ обработать прямоугольник из строк i..j }
В каждом таком прямоугольнике будем искать максимальную подматрицу, включающую
в себя отрезки строк i..j, т.е полностью заполняющую прямоугольник сверху
донизу.
* * * * * * *
* [* * * *] * i
* [* * * *] *
* [* * * *] * j
* * * * * * *
Такую подматрицу можно найти простым сканирующим алгоритмом, аналогично
одномерному случаю.
Итого, алгоритм имеет сложность n^3 = 10^6 операций. Быстрее можно, но не так,
чтобы намного. Квадратичный алгоритм мне неизвестен, да и вряд ли есть.
--- ifmail v.2.15dev5
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)