Ёжик (3 уровень) |
Условие :План прямоугольного сада размером mxn состоит из квадратных зон. В каждой зоне растёт по дереву. С каждого дерева любой зоны могут упасть несколько яблок. В левом верхнем квадратике находится ёжик, который должен дойти до правого нижнего квадратика. В саду существуют ограничения относительно способа передвижения: ёжик может двигаться из текущего квадратика только в один из двух соседних правый либо нижний. Составьте программу, которая вычисляет максимальное количество яблок, которое может собрать ёжик, передвигаясь к нужному квадратику. Технические условия: План сада задан таблицей apples содержащей m строк и n столбиков. Элемент apples[i,j] таблицы указывает количество яблок, упавших с дерева в зону с координатами i,j. Текстовый файл "input.txt" содержит в первой строке числа m,n разделённые пробелом. В каждой из следующих m строк содержится по n чисел apples[i,j] разделённых пробелами. Файл "output.txt" должен содержать одно натуральное число. Примеры файлов: Input.txt Output.txt 3 3 1 2 3 1 2 3 1 2 3 12
Решение : (by Sergey Lungy [_pva3000_@mail.ru])var apples:array [1..10,1..10] of byte; max,s:integer; m,n,i,j:byte; f:text; procedure calc(i,j:byte); begin s:=s+apples[i,j]; if i<m then calc(i+1,j); if j<n then calc(i,j+1); if s>max then max:=s; s:=s-apples[i,j]; end; BEGIN assign(f,'input.txt'); reset(f); read(f,m,n); for i:=1 to m do begin for j:=1 to n do read(f,apples[i,j]); end; close(f); calc(1,1); assign(f,'output.txt'); rewrite(f); write(f,max); close(f); END. |