Двумерное динамическое программирование
Квадрат разлинован на N×N клеток (1 < N < 20). Исполнитель Буквоед может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: влево или вниз. По команде влево Буквоед перемещается в соседнюю левую клетку, по команде вниз – в соседнюю нижнюю. При попытке пересечь границы квадрата, обозначенные жирными линиями, Буквоед разрушается. В каждой клетке квадрата указан её тип латинскими буквами A, B или C. Посетив клетку, Буквоед платит или получает деньги за её посещение; это также относится к начальной и конечной точке маршрута. За посещение клетки A взимается плата 7 монет, за посещение клетки B Буквоеду выплачивают 2 монеты, за посещение клетки C Буквоеду выплачивают 5 монет. Определите максимальный убыток и максимальную прибыль, которую может получить Буквоед, пройдя из правой верхней клетки в левую нижнюю. В ответе укажите два числа – сначала максимальный убыток, затем максимальную прибыль.
Исходные данные для Робота записаны в файле 18p-7.xls в виде прямоугольной таблицы, каждая ячейка которой соответствует клетке квадрата.