79 lines
1.4 KiB
C
79 lines
1.4 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <stdbool.h>
|
|
#define UPRIGHT true
|
|
#define LEFTDOWN false
|
|
|
|
bool direction = UPRIGHT;
|
|
|
|
bool moveNext(int* i, int* j, int n) {
|
|
if (*i == n-1 && *j == n-1) {
|
|
return true;
|
|
}
|
|
if (direction == UPRIGHT) {
|
|
if (*i == 0) {
|
|
direction = LEFTDOWN;
|
|
if (*j == n-1) {
|
|
(*i)++;
|
|
}
|
|
else {
|
|
(*j)++;
|
|
}
|
|
}
|
|
else if (*j == n-1) {
|
|
direction = LEFTDOWN;
|
|
(*i)++;
|
|
}
|
|
else {
|
|
(*i)--;
|
|
(*j)++;
|
|
}
|
|
return false;
|
|
}
|
|
else {
|
|
if (*j == 0) {
|
|
direction = UPRIGHT;
|
|
if (*i == n-1) {
|
|
(*j)++;
|
|
}
|
|
else {
|
|
(*i)++;
|
|
}
|
|
}
|
|
else if (*i == n-1) {
|
|
direction = UPRIGHT;
|
|
(*j)++;
|
|
}
|
|
else {
|
|
(*i)++;
|
|
(*j)--;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
int main() {
|
|
int *matrixPtr = NULL;
|
|
int n = 0;
|
|
int i = 0, j = 0;
|
|
|
|
scanf("%d", &n);
|
|
matrixPtr = malloc(n*n);
|
|
|
|
for (i = 0; i < n; i++) {
|
|
for (j = 0; j < n; j++) {
|
|
scanf("%d", matrixPtr + i*n + j);
|
|
}
|
|
}
|
|
|
|
i = 0;
|
|
j = 0;
|
|
while (true) {
|
|
printf("%d ", *(matrixPtr + i*n + j));
|
|
if (moveNext(&i, &j, n)) {
|
|
break;
|
|
}
|
|
}
|
|
printf("\n");
|
|
return 0;
|
|
} |