Если у вас есть доска со змеями и лестницами, найдите минимальное количество бросков кубиков, необходимое для достижения пункта назначения или последней ячейки из источника или 1-й ячейки. По сути, игрок полностью контролирует результат броска костей и хочет определить минимальное количество бросков, необходимое для достижения последней клетки.
Если игрок достигает ячейки, которая является основанием лестницы, игрок должен подняться вверх по этой лестнице, и, если он достигает ячейки, являющейся пастью змеи, он должен опуститься на хвост змеи без броска кубиков.
Например, рассмотрим показанную доску, минимальное количество бросков игральных костей, необходимое для достижения ячейки 30 из ячейки 1, равно 3.
Ниже приведены шаги:
а) Сначала бросьте два кубика, чтобы добраться до клетки № 3, а затем по лестнице, чтобы достичь 22
б) Затем бросьте 6, чтобы достичь 28.
в) Наконец через 2 до 30.
Могут быть и другие решения, такие как (2, 2, 6), (2, 4, 4), (2, 3, 5) и т. Д.
Идея состоит в том, чтобы рассматривать данную змею и лестничную площадку как ориентированный граф с числом вершин, равным количеству ячеек на доске. Проблема сводится к поиску кратчайшего пути в графе. Каждая вершина графа имеет ребро для следующих шести вершин, если в следующих 6 вершинах нет змеи или лестницы. Если у любой из следующих шести вершин есть змея или лестница, то ребро текущей вершины идет к вершине лестницы или хвоста змеи. Поскольку все ребра имеют одинаковый вес, мы можем эффективно найти кратчайший путь, используя поиск по ширине графа.
Ниже приводится реализация вышеуказанной идеи. Входные данные представлены двумя вещами, во-первых, это «N», которое является числом ячеек на данной доске, во-вторых, это массив «move [0… N-1]» размера N. Входное движение [i] равно -1 если нет змеи и лестницы от i, в противном случае move [i] содержит индекс ячейки назначения для змеи или лестницы в i.
|
Джава
|
python3
|
C #
|
Выход:
Min Dice throws required is 3
Временная сложность вышеупомянутого решения составляет O (N), поскольку каждая ячейка добавляется и удаляется только один раз из очереди. И типичная операция постановки в очередь или удаления занимает O (1) времени.
Эта статья предоставлена Сиддхартом . Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Word Ladder — Набор 2 (Двунаправленный BFS)
- Word Ladder (Длина самой короткой цепочки для достижения целевого слова)
- Проблема с гайками и болтами (проблема с замком и ключом) | Набор 2 (Hashmap)
- Проблема с гайками и болтами (проблема с замком и ключом) | Комплект 1
- Проблема 2-удовлетворенности (2-SAT)
- Задача суммы подмножеств | DP-25
- Проблема с кувшином воды с использованием BFS
- Проблема знаменитости
- Проблема с разделами | DP-18
- Проблема укладки коробок | DP-22
- Проблема с черепицей
- Проблема с подключением к воде
- Проблема с предками уровня
- Задача суммы подмножеств в пространстве O (сумма)
- Проблема графа Петерсона
0.00 (0%) 0 votes