Подтвердить что ты не робот

Алгоритм Room Locker

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

Я нашел этот интересный вопрос о раздевалке:

В раздевалке Rec есть N шкафчиков с меткой 1, 2,.,., N.

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

Копии ключа для каждого шкафчика находятся в соседних шкафчиках; т.е. копия ключа в шкафчик я помещается в шкафчик я + 1 и я - 1 ( ключ к шкафчику 1 находится только в шкафчике 2, а ключ к шкафчику N находится только в шкафчик N - 1).

Т теннисные мячи находятся внутри T-ящиков (и вы знаете, какие из шкафов они находятся). Вы получаете ключи от M шкафчики и ваша цель - собрать все теннисные мячи открывая наименьшее количество шкафчиков.

Для изображений вы можете увидеть его непосредственно в здесь файле.

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

Я думаю, что:

  • Необходимо проверить мяч один за другим. Таким образом, для каждого шара (игнорируйте другие шары) каждый ключ должен посещать, пройдя к обозначенному шару. Для каждого ключа вычислите шаги, необходимые для посещения мяча. Наименьший результат хранится в переменной, называемой "total steps".

  • Сделайте эту точную вещь для следующего шара, и когда я получу минимальные шаги для этого текущего шара. Я добавляю это значение к "общим шагам".

  • Применяется специальное условие, если над ключом находится мяч, затем начинается запуск ключа с я + 1 и i-1.

Мой вопрос: я прав? Я не хочу делиться неправильным алгоритмом с другими, так как это непрофессионально. С нетерпением ждем комментариев, предложений и материалов.

4b9b3361

Ответ 1

Ваш алгоритм не приведет к минимальному количеству шагов. Вы не можете рассматривать шары самостоятельно. Давайте рассмотрим следующий случай: у вас есть только один ключ для шкафчика номер 1, а шарики - в шкафчиках 12, 10, 8, 6, 4, 2. Если вы рассмотрите шары в том порядке, который я дал вам, равный 11 + 9 + 7 + 5 + 3 + 1, в то время как вы можете решить проблему за один проход из 11 шагов. Вы не должны игнорировать поля, посещенные на предыдущих шагах.

Ответ 2

Вот техника, которую вы можете использовать:

Рассмотрим каждый шкафчик (в котором есть шар, из которого у вас есть ключ, а у которого нет), чтобы быть node на графике. Узлы будут иметь два типа:

A) Lockers having balls
B) Lockers of which you have keys.
C) Lockers which have none

Рассмотрим все замки типа А, которые должны быть закрыты, и тип-B должен быть открытым.

Из всех открытых шкафчиков найдите пути ко всем закрытым шкафчикам (из шкафчика типа B) и откройте шкафчик в с минимальной длиной пути. Кроме того, откройте все шкафы типа C, которые попадают в этот минимальный путь и перемещают их из категории C в B.

Повторите шаг выше, пока не откроются все шкафчики в A. Сумма всех минимальных дорожек, которые вы встретили, будет вашим ответом.