Как пройти квадрат с наибольшего расстояния (Java)
Я работаю над программой, в которой мне нужно пересечь квадрат от наибольшего расстояния до кратчайшего расстояния, начиная с центра и учитывая максимальный диапазон, который может пройти объект.
Обход будет выглядеть примерно так, каждый шаг помечается, начиная с 0 до 35 (извините за дерьмовую диаграмму). Максимальное расстояние будет 3 от центра:
Я думал, что это может работать в два цикла, но я не думаю, что это будет работать без тонны if
заявления. Я хочу, чтобы это было полуэффективно, если это возможно.
Мне не нужен какой-либо код, просто некоторые идеи о том, как заставить его работать (хотя не стесняйтесь размещать что угодно).
Спасибо за помощь ребята.
1 ответ
Самый простой подход, который я могу придумать, будет включать 5 петель - по одной для каждого направления (все отдельные петли), а затем одну для расстояния снаружи (что будет самой внешней петлей).
Значение самого внешнего цикла позволило бы нам определить, где каждый цикл должен начинаться и заканчиваться.
Как черновик, я думаю, что это будет выглядеть примерно так:
for i = 0 to n
for x = i to (n-i-1)
// process matrix[x][i]
for y = i to (n-i-1)
// process matrix[n-i][y]
for x = (n-i) downto i
// process matrix[x][n-i]
for y = (n-i) downto i
// process matrix[i][y]
Я оставлю это вам, чтобы написать реальный код.