Заполнение матрицы по спирали - C# (198761)
Формулировка задачи:
Всем доброго времени суток. Есть такая задача:
Заполнить квадратную матрицу, размерностью (N), целыми числами 1,2,3,4... Записываю их по спирали.
Начало спирали левого угла,вправо,вниз,влево,вверх,вправо и т.д.
Не могу понять,как решить задачу.
Решение задачи: «Заполнение матрицы по спирали»
textual
Листинг программы
const int n = 6;
const int m = 8;
int[,] matrix = new int[n, m];
int row = 0;
int col = 0;
int dx = 1;
int dy = 0;
int dirChanges = 0;
int visits = m;
for (int i = 0; i < matrix.Length; i++) {
matrix[row, col] = i + 1;
if (--visits == 0) {
visits = m * (dirChanges %2) + n * ((dirChanges + 1) %2) - (dirChanges/2 - 1) - 2;
int temp = dx;
dx = -dy;
dy = temp;
dirChanges++;
}
col += dx;
row += dy;
}