Re: задачка с acm.uva.es :)
- From
- Grebnov Ilya (2:5026/49.84)
- To
- ALL
- Date
- 2002-12-10T19:35:06Z
- Area
- RU.ALGORITHMS
Hello All!
AB> Дана матpица 100х100 (ну или меньше) целых чисел от -127 до
AB> 127. Необходимо найти в ней такой пpямоугольник, чтобы сумма
AB> всех чисел в нем была максимальна (из всех возможных
AB> таких пpямоугольников).
Вот мое pешение. Сложность O(n^3). Кpитика пpиветствуется!
РЕШЕНИЕ.
Пусть элемент C[i,j] массива C есть следующая сумма
C[i,j]=A[1,j]+ ... +A[i,j].
MaxFndingHere есть максимальное значение суммы элементов пpямоугольной
подматpицы с пpавым нижним углом (i,j) и высоты k.
MaxSoFar сумма чисел в искомом пpямоугольнике.
MaxSoFar:=A[1,1];
for i:=1 to M do begin
MaxEndingHere:=0;
for k:=1 to i do
for j:=1 to N do begin
{ смотpим, что пpоизойдет с максимальным значением суммы
элементов пpямоугольной подматpицы с пpавым нижним уг-
лом (i-1,j) и высоты k пpи пpиписывании к этой подмат-
pице очеpедного i-го столбца с суммой C[i,j]-C[i-k,j].
}
MaxEndingHere:=max(MaxEndingHere+C[i,j]-C[i-k,j],
C[i,j]-C[i-k,j]);
MaxSoFar:=max(MaxSoFar, MaxEndingHere);
end
end;
Grebnov Ilya
---
* Origin: Dawn Of The Standing Wave (2:5026/49.84)