Программа для кодирования зигзагообразной матрицы по вертикали

Я пишу динамический код, который печатает матрицу nxn в шаблоне зигзага. Пожалуйста, помогите мне с кодом, чтобы получить результат, указанный ниже:

Код, который я пробовал до сих пор с помощью Rizier123, находится в горизонтальном зигзагообразном шаблоне:

#include  int main() { int rows, columns; int rowCount, columnCount, count = 0; printf("Please enter rows and columns:\n>"); scanf("%d %d", &rows, &columns); for(rowCount = 0; rowCount < rows; rowCount++) { for(columnCount = 1; columnCount <= columns; columnCount++) { if(count % 2 == 0) printf("%4d " , (columnCount+(rowCount*columns))); else printf("%4d " , ((rowCount+1)*columns)-columnCount+1); } count++; printf("\n"); } return 0; } 

Входные данные:

 5 5 

Выход:

  1 2 3 4 5 10 9 8 7 6 11 12 13 14 15 20 19 18 17 16 21 22 23 24 25 

Я хочу, чтобы один и тот же образ зигзага, но вертикально ..

РЕДАКТИРОВАТЬ

Ожидаемый результат:

 1 10 11 20 21 30 2 9 12 19 22 29 3 8 13 18 23 28 4 7 14 17 24 27 5 6 15 16 25 26 

Это должно сработать для вас:

 #include  int main() { int rows, columns; int rowCount, columnCount; printf("Please enter rows and columns:\n>"); scanf("%d %d", &rows, &columns); for(rowCount = 0; rowCount < rows; rowCount++) { for(columnCount = 0; columnCount < columns; columnCount++) { if(columnCount % 2 == 0) printf("%4d " , rows*(columnCount)+rowCount+1); else printf("%4d " , (rows*(columnCount+1))-rowCount); } printf("\n"); } return 0; } 

Входные данные:

 5 5 

Выход:

 1 10 11 20 21 2 9 12 19 22 3 8 13 18 23 4 7 14 17 24 5 6 15 16 25