задачка с acm.uva.es :)

From
Nick Poroshin (2:5054/58.5)
To
Ilia Kantor
Date
2002-12-10T02:54:46Z
Area
RU.ALGORITHMS
Привет Ilia!

 09 декабря 2002 15:03, Ilia Kantor wrote to Georgy Plechanov:
 AB>>>>> Дана матрица 100х100 (ну или меньше) целых чисел от -127 до
 AB>>>>> 127. Необходимо найти в ней такой прямоугольник, чтобы сумма
 AB>>>>> всех чисел в нем была максимальна (из всех возможных
 AB>>>>> таких прямоугольников).
 IK> Перебираем все прямоугольники, состоящие из соседних строк

 IK> for(i=0;i<100;i++)
 IK>   for(j=i;j<100;j++)
 IK>     { обработать прямоугольник из строк i..j }

 IK> В каждом таком прямоугольнике будем искать максимальную подматрицу,
 IK> включающую в себя отрезки строк i..j, т.е полностью заполняющую
 IK> прямоугольник сверху донизу.

 IK>  * * * * * * *
 IK>  * [* * * *] *  i
 IK>  * [* * * *] *
 IK>  * [* * * *] *  j
 IK>  * * * * * * *

 IK> Такую подматрицу можно найти простым сканирующим алгоритмом,
 IK> аналогично одномерному случаю.
Однако его сложность n^2 !  (т.е. n*(j-i+1)  )

 IK> Итого, алгоритм имеет сложность n^3 = 10^6 операций. Быстрее можно, но
                                     n^4 !
 IK> не так, чтобы намного. Квадратичный алгоритм мне неизвестен, да и
 IK> вряд
 IK> ли есть.

С уважением, Poroshin Nick

---
 * Origin: Default origin (2:5054/58.5)