Навигация по матрице логических значений - PullRequest
0 голосов
/ 15 апреля 2020

Я пытался более серьезно относиться к изучению Java, поэтому я просматривал несколько сотен непрочитанных «Ежедневных проблем с кодированием» в моем почтовом ящике. Одним из них является следующее:

"Вам дана матрица M by N, состоящая из логических значений, представляющих доску. Каждый истинный логический символ представляет стену. Каждый ложный логический элемент представляет плитку, по которой вы можете ходить.

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

Например, для следующей доски:

[
 0  1  2  3
0[f, f, f, f],
1[t, t, f, t],
2[f, f, f, f],
3[f, f, f, f]
]

" и start = (3, 0) (внизу слева) и end = (0, 0) (вверху слева), минимальное количество шагов, необходимых для достижения конца, равно 7, так как нам нужно было бы go через (1, 2), потому что во втором ряду повсюду есть стена. "

Я пытался использовать этот код:

    boolean map[][] = {{false, false, false, false}, {true, true, false, true}, {false, false, false, false}, {false, false, false, false}};

    int xPos = 3;
    int yPos = 0;

    int xPosFinal = 2;
    int yPosFinal = 0;

    int steps = 0;

    //  Look up then look right then look down then look down then look left
    while (xPos != xPosFinal && yPos != yPosFinal) {
        if (!map[xPos - 1][yPos]) { //  Check up
            xPos -= 1;
            steps++;
        } else if (!map[xPos][yPos + 1]) {  //  Check right
            yPos += 1;
            steps++;
        } else if (!map[xPos + 1][yPos]) {  //  Check down
            xPos += 1;
            steps++;
        } else if (!map[xPos][yPos - 1]) {  //  Check left
            yPos -= 1;
            steps++;
        }
    }

    System.out.println("Getting through this maze requires " + steps + " steps to complete.");

Однако, когда я пытаюсь его запустить, количество шагов не обновляется. Я провел небольшое исследование и нашел кое-что об алгоритме Ли, но это перечислено как простая проблема и, скорее всего, не требует ничего слишком сложного для решения. Мне просто нужно многое узнать о Java. '

Дайте мне знать, что вы думаете. Любая помощь высоко ценится! Спасибо!

...