| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [С++] Поиск пути по клеткам с максимальной суммой |
| Автор: tymrfik 21.1.2011, 10:28 | ||||
| За долгую и верную службу Рыцарю позволено набрать сокровищ в сокровищнице своего сеньора. Сокровищница имеет форму прямоугольника, состоящего из отдельных "клеток" — прямоугольных комнат. В каждой комнате хранятся сокровища известной стоимости. Рыцарь может вынести сколько угодно сокровищ, но пройдя через сокровищницу только один раз. Он может начать с любой комнаты вдоль внешней северной стены сокровищницы (выбор комнаты — за рыцарем). На каждом шаге он может переходить в одну из трех "южно-соседних" комнат: южную, юго-восточную или юго-западную. Из комнат, граничащих с восточной или западной внешней стеной, возможны только два направления выхода. Закончить путь Рыцарь должен в любой из комнат на южной внешней стороне сокровищницы. У Рыцаря есть план сокровищницы — прямоугольная таблица, в которой обозначены стоимости сокровищ каждой комнаты. Направлению с севера на юг соответствует направление сверху вниз на карте. По заданной карте нужно найти один из допустимых путей, обеспечивающих наибольшую возможную сумму сокровищ. Вход. Первая строка в тексте содержит два числа N и М, обозначающие "ширину" и "высоту", далее М строк по N неотрицательных целых чисел в каждой — стоимости сокровищ соответствующих комнат. Размеры сокровищницы не более чем 80x80 комнат. Выход. В первой строке указывается номер (по порядку с запада на восток) комнаты северного ряда, из которой нужно начать движение, во второй — строка символов, означающих на¬правление очередного перехода (S — на юг, Е — на юго-восток, W — на юго-запад); в третьей — полученная максимально возможная суммарная стоимость. Если есть несколько путей с максимальной суммой, вывести любой из них.
}
Надо из этого сделать мемоизацию! Прошу помогите?!!!! Вроде нужно переписать функцию void find, а для это как я понимаю необходимо и двумерный массив задавать без случайных чисел (с этим справилась), а вот как тут сделать с МЕМОИЗАЦИЕЙ?!!!!!! Срочно пожалуйста помогите! |
| Автор: tymrfik 26.1.2011, 19:19 | ||
Ладно, забудем про тот код, он мне пока не пригодился. ПОМОГИТЕ ПОЖАЛУЙСТА С САМОЙ РЕКУРСИЕЙ. Вот что я думаю о том как должна выглядеть просто рекурсия, вроде псевдокода:
Благодарна буду за идеи!!! Прошу!!! Подскажите как быть с самыми первыми ячейками [0][0], [0][1], .....[0][m-1]?!!!!! их нужно сначала перебирать через цикл и считать для них сумму?!!!! Помогите с кодом!!!! (До утра успеть бы. Зачет.) ЕЩЕ Волнующие вопросы: как быть с первыми ячейками таблицы? и саму функцию нахождения максимума потом как подключить, т.е через класс?! |