修改文件结构。
This commit is contained in:
79
POP/12/Optional01.c
Normal file
79
POP/12/Optional01.c
Normal file
@@ -0,0 +1,79 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user