Я пытался более серьезно относиться к изучению 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. '
Дайте мне знать, что вы думаете. Любая помощь высоко ценится! Спасибо!