题解 | #蛇形矩阵#
蛇形矩阵
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"); } }