Король лабиринт - PullRequest
       15

Король лабиринт

4 голосов
/ 08 апреля 2011

Я готовлюсь к соревнованию по программированию, и у меня возникают сложные проблемы, на которые я не мог ответить в прошлом.Одним из них был Лабиринт Короля.По сути, вам дан массив чисел NxN -50<x<50, которые представляют "токены".Вы должны начать с позиции 1,1 (я предполагаю, что это 0,0 в индексах массива) и закончить на N, N.Вы должны собирать токены в ячейках, которые посещаете, и не можете наступить на ячейку без токена (обозначенного 0).Если вас окружают 0, вы проигрываете.Если в лабиринте нет решения, вы выводите «Нет решения».Иначе, вы выводите максимально возможное число, которое можете получить, складывая собранные токены.

Я понятия не имею, как решить эту проблему.Я подумал, что вы могли бы написать алгоритм лабиринта для его решения, но это занимает время, и в соревнованиях по программированию вам дается всего два часа на решение множества проблем.Я предполагаю, что есть какой-то шаблон, который мне не хватает.Кто-нибудь знает, как я должен подходить к этому?

Кроме того, это может помочь упомянуть, что эта проблема предназначена для старшеклассников.

Ответы [ 3 ]

3 голосов
/ 08 апреля 2011

Этот тип проблемы обычно решается с помощью динамического программирования или памятки .

По сути, вы формулируете рекурсивное решение и решаете его снизу вверх, запоминая и повторно используя ранее вычисленные результаты.

1 голос
/ 08 апреля 2011

Простой подход (т. Е. Простейший в коде) - попробовать все возможные пути - попробовать каждый первый шаг;для каждого первого шага попробуйте каждый второй шаг;для каждой комбинации первый шаг / второй шаг попробуйте каждый третий шаг;и так далее.Однако в зависимости от того, насколько велик лабиринт, запуск может занять слишком много времени (или нет).

Ваш следующий шаг - подумать, как вы можете сделать это быстрее.Первый шаг обычно состоит в том, чтобы исключить ходы, которые, как вы знаете, не могут привести к финишу или не могут привести к финишу с более высокими баллами, чем тот, который у вас уже есть.Поскольку это тренировка для соревнований, мы оставим вас делать эту работу самостоятельно.

0 голосов
/ 08 апреля 2011

Представьте себе «графические» алгоритмы: Руководство по разработке алгоритмов

...