У меня есть назначение, которое: Печатать 2D-матрицу в спиральном порядке, начиная с верхнего левого угла, а затем начиная с центра (конечной точкой первого назначения будет начальная точка).
Я сделал обход в левом верхнем углу, нет проблем, но я не могу изменить код, чтобы сделать наоборот. Какие-нибудь мысли?
for (int n = 0, i = 0, j = 0, rightWall = size - 1, leftWall = 0; n < size *
size; n++) {
if ((i == (leftWall + 1)) && (j == leftWall)) {rightWall--;
leftWall++;} //SHRINK SPIRAL
if ((j == rightWall) && (i < rightWall)) {i++; continue;} //GO DOWN
if ((j < rightWall) && (i == leftWall)) {j++; continue;} //GO RIGHT
if ((i == rightWall) && (j > leftWall)) {j--; continue;} //GO LEFT
if ((j == leftWall) && (i > leftWall)) {i--; continue;} //GO UP
}
Задача ещё не решена.
Других решений пока нет …