题解 | #回型矩阵#
回型矩阵
https://www.nowcoder.com/practice/36d5dfddc22c4f5b88a5b2a9de7db343
#include <stdio.h> int main() { //输入一个数 int n = 0; scanf("%d", &n); int arr[20][20] = { 0 }; int a = 1; int i = 0; int j = 0; int col = 0; int row = 0; int l = 1; int h = 1; while (1) { //横着的 if (n - l == 0)//n为奇数时 { arr[i][j] = a; if (a == n * n) { goto end; } } for (j = row;j < n - l+row;j++) { arr[i][j] = a; if (a == n * n) { goto end; } a++; } //竖着的 for (i = col;i < n - h+col;i++) { arr[i][j] = a; if (a == n * n) { goto end; } a++; } //横着的 while (j > row) { arr[i][j] = a; if (a == n * n) { goto end; } a++; j--; } //竖着的 while (i > col) { arr[i][j] = a; if (a == n * n) { goto end; } a++; i--; } col++; row++; h += 2; l += 2; i = col; j = row; } end: for (i = 0;i < n;i++) { for (j = 0;j < n;j++) { printf("%d ", arr[i][j]); } putchar('\n'); } return 0; }