Учитывая N * N бинарный лабиринт, где 0 означает, что позиция может быть посещена, а 1 означает, что позиция не может быть посещена без ключа, задача состоит в том, чтобы найти, возможно ли посетить нижнюю правую ячейку сверху левая ячейка с одним ключом по пути. Если возможно, тогда напечатайте «Да», иначе напечатайте «Нет» .
Пример:
Input: maze[][] = {
{0, 0, 1},
{1, 0, 1},
{1, 1, 0}}
Output: Yes
Подход: эта проблема может быть решена с помощью рекурсии , для очень возможного перемещения, если текущая ячейка равна 0, тогда без изменения состояния клавиши проверьте, является ли это место назначения, иначе движение вперед. Если текущая ячейка равна 1, тогда ключ должен использоваться, теперь для дальнейших перемещений ключ будет установлен в значение false, то есть он никогда больше не будет использоваться по тому же пути. Если какой-либо путь достигает пункта назначения, выведите « Да», иначе выведите « Нет» .
Ниже приведена реализация вышеуказанного подхода:
|
Выход:
Yes
Сложность времени: O (2 N )
Рекомендуемые посты:
- Крыса в лабиринте | Откат-2
- Крыса в лабиринте | Возврат с помощью стека
- Кратчайший путь в двоичном лабиринте
- Крыса в лабиринте с несколькими шагами или прыжком
- Крыса в лабиринте Проблема, когда разрешено движение во всех возможных направлениях
- Подсчитайте количество способов добраться до места назначения в лабиринте, используя BFS
- Подсчитайте количество способов добраться до места назначения в лабиринте
- Вариация Крысы в Лабиринте: допускается несколько шагов или прыжков
- Подсчитайте количество способов добраться до места назначения в лабиринте
- Найти пути от угловой клетки до средней клетки в лабиринте
- Ожидаемое количество ходов, чтобы достичь конца доски | Матрица возведения в степень
- Ожидаемое количество ходов, чтобы достичь конца доски | Динамическое программирование
- Найти минимальную разность пути от (0, 0) до (N-1, M-1)
- Печатать путь между любыми двумя узлами в двоичном дереве | Набор 2
0.00 (0%) 0 votes