Вход


Главная страница >> Учебный процесс >> Задачник >> Олимпиадные задачи (с решениями) >> Учебный процесс >> Задачник >> Олимпиадные задачи (с решениями) >> Рекурсия >> Номер 13

[Назад]    [Содержание ]    [Вперед]

  


Номер 13


  Условие: Номер 13


Задача 12. Дан массив A[N,M]. Необходимо найти максимальную сумму элементов прямоугольного подмассива по всем возможным прямоугольным подмассивам.

  Решение задачи: Номер 13


Решение задачи 12. Комбинируем идеи пунктов a) и c) задачи 16 (глава "Сортировки и последовательности"). Пусть элемент C[i,j] массива C есть следующая сумма C[i,j]=A[1,j]+ ... +A[i,j]. Переменная MaxSoFar имеет то же самое назначение, что и раньше,MaxFndingHere есть максимальное значение суммы элементов прямоугольной подматрицы с правым нижним углом (i,j) и высоты k. 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 {смотрим, что произойдет с максимальным значением суммы элементов прямоугольной подматрицы с правым нижним углом (i-1,j) и высоты k при приписывании к этой подматрице очередного 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;

Назад



[Назад]    [Содержание ]    [Вперед]

  


  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017