C ++ Изменить код для печати 2D-матрицы в спиральном порядке, начиная с центра

У меня есть назначение, которое: Печатать 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
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]