OriginalGriff
Во-первых, вам нужно создать массив для хранения значений (поскольку они не следуют в последовательности, которую можно легко распечатать на консоли, вы должны поместить их в массив, а затем распечатать их, когда он будет завершен.)
Сделайте массив 2-мерным: N x N
int[,] data = new int[N, N];
И он будет предварительно заполнен нулями.
Создайте пару индексаторов x и y и начните их с нуля.
Также создайте еще несколько целых чисел, называемых dx и dy, и установите dx в 1, а dy в ноль.
Теперь выполните цикл от 0 до (N * N) - 1 раз для переменной с именем i
Внутри цикла установите значение data[x, y] равным i + 1,
Затем добавьте dx к x и dy к y и посмотрите на результаты.
Если x и y находятся внутри массива, посмотрите на элемент, на который они теперь указывают. Если он равен нулю, то он пуст, так что все в порядке
В противном случае, вам нужно изменить направление.
Значения dx и dy определяют, в каком направлении вы будете двигаться, поэтому посмотрите на них, и должно быть довольно очевидно, как вам нужно их изменить: (1, 0) становится (0, 1); (0, 1) становится (-1, 0); (-1, 0) становится (0, -1), и (0, -1) снова становится (1, 0).
Попробуйте на бумаге, и вы поймете, что я имею в виду. Немного подумав, это не должно быть трудно преобразовать в код!