Вывод квадрата чисел, повернутых по "спирали" - C#
Формулировка задачи:
Прошу помочь с решением такой-вот задачи. Вводится натуральное число N (2<N<100) в единственной строке ввода .
Вывод должен состоять из N строчек по N чисел (от 1 до N^2) , которые ,в свою очередь, разделяются пробелами.
Сама "спираль" вывода должна начинаться только в левом верхнем углу, закручиваться по часовой стрелке внутрь. Например,Ввод: 4 Вывод: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 Ввод: 3 Вывод: 1 2 3 8 9 4 7 6 5
Решение задачи: «Вывод квадрата чисел, повернутых по "спирали"»
textual
Листинг программы
int n = int.Parse(Console.ReadLine());
int[,] matrix = new int[n, n];
int row = 0;
int col = 0;
int dx = 1;
int dy = 0;
int dirChanges = 0;
int visits = n;
for (int i = 0; i < matrix.Length; i++)
{
matrix[row, col] = i + 1;
if (--visits == 0)
{
visits = n * (dirChanges % 2) + n * ((dirChanges + 1) % 2) - (dirChanges / 2 - 1) - 2;
int temp = dx;
dx = -dy;
dy = temp;
dirChanges++;
}
col += dx;
row += dy;
}
// вывод -?
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write(matrix[i, j] + " ");
}
Console.WriteLine();
}
Console.ReadKey();