Заполнить матрицу зигзагом
Помогите пожалуйста исправить мой код .
Должно получиться вот так
Вот мой код
int n = 5;
int[,] matrix = new int[n, n];
int curr = 1;
for (int diff = 1 - n; diff <= n - 1; diff++)
{
for (int i = 0; i < n; i++)
{
int j = i - diff;
if (j < 0 || j >= n)
continue;
matrix[j, i] = curr++;
}
}
for (int j = 0; j < n; j++)
{
for (int i = 0; i < n; i++)
Console.Write(matrix[j, i] + " " );
Console.WriteLine();
}
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Почти всё уже сделано, осталось правильно развернуть диагонали в зависимости от чётности прохода (с учётом чётности n)
if (((diff+n+1) % 2) != 0)
matrix[i, n-1-j] = curr++;
else
matrix[n-1-j, i] = curr++;
1 2 6 7 15
3 5 8 14 16
4 9 13 17 22
10 12 18 21 23
11 19 20 24 25