Проблема о разрешении лабиринта с возвратом Java

Вы можете сделать что-то вроде следующего:

$colors = array('111', '222');
$i = 0;
while (...) {
    echo '<li style="background: #' . $colors[$i % count($colors)] . '"></li>';
    $i++;
}

Для аккуратности вы также можете превратить петлю while в цикл for. Например:

$colors = array('111', '222');
for ($i = 0; ...; $i++) {
    echo '<li style="background: #' . $colors[$i % count($colors)] . '"></li>';
}
1
задан OnlyDavies 18 March 2019 в 14:05
поделиться

2 ответа

Как сказал DrPhill, вы должны отслеживать, где вы были. Вы уже делаете это в функции mark, но не используете эту информацию в функции checkValidMovement.

Вы должны изменить эту функцию, чтобы она выглядела примерно так:

private static boolean checkValidMovement(int[][] maze, int stepX, int stepY , int movement, int[][] solution)
  {
    if(checkNotOutOfBounds(maze, stepX, stepY, movement) 
        && checkNotCollideWithObstacle(maze, stepX, stepY, movement)
        && isNotYetVisited(maze, stepX, stepY, movement, solution))
    {
      return true;
    }
    return false;
  }   

где функция isNotYetVisited возвращает false, если значение solution на следующем шаге не равно 1.

Надеюсь, это поможет.

0
ответ дан Tawcharowsky 18 March 2019 в 14:05
поделиться

Я думаю, что самый простой способ сделать это - просто запомнить координаты вашего последнего присутствия. Если нет никаких других правильных ходов, кроме возврата назад, вернитесь назад и отметьте место, на котором вы были, в качестве стены. Наконец вы доберетесь до [F].

0
ответ дан Mershel 18 March 2019 в 14:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: