Заполнить матрицу зигзагом

Помогите пожалуйста исправить мой код .Должно получиться вот так

Должно получиться вот так

Вот мой код

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)

ideone

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 
→ Ссылка