题解 | #蛇形矩阵#
蛇形矩阵
https://www.nowcoder.com/practice/f228a074c5274619b26be544962375e1
#include<stdio.h>
void Serpentine_array(int arr[][1000], int n);
void Serpentine_print(int arr[][1000], int n);
int main() {
int i = 0, j = 0;//循环变量
int n = 0;
int arr[1000][1000] = { 0 };
//输入整数
scanf("%d", &n);
//蛇形矩阵赋值
Serpentine_array(arr, n);
//矩阵输出
Serpentine_print(arr, n);
return 0;
}
void Serpentine_array(int arr[][1000], int n) {
int count = 1;//赋值
int i = 0, j = 0;
int flag = 0;//方向
//矩阵内部
while (count <= n * n) {
if (i >= 0 && i < n && j >= 0 && j < n) {
arr[i][j] = count;
count++;
if (0 == flag) {
i--;
j++;
} else {
i++;
j--;
}
}
//左端
if (j < 0 && i != n) {
j++;
flag = 0;
}
//右端
else if (j == n) {
j--;
i += 2;
flag = 1;
}
//上部
else if (i < 0 && j != n) {
i++;
flag = 1;
}
//下部
else if (i == n) {
i--;
j += 2;
flag = 0;
}
}
}
void Serpentine_print(int arr[][1000], int n) {
int i = 0, j = 0;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
