题解 | #回型矩阵#
回型矩阵
https://www.nowcoder.com/practice/36d5dfddc22c4f5b88a5b2a9de7db343
#include <stdio.h> int main() { int n = 0; int i = 0; int j = 0; int num = 1;//用来赋值的数 int arr[20][20] = { 0 }; int begin = 0;//给数组赋值开始下标 int end = 0;//给数组赋值结束下标 scanf("%d", &n); begin = 0; end = n - 1; while (num-1 <= n * n)//每一次赋值最外面的一圈 { for (i = begin; i < end; i++)//每一回赋值(end-begin)个数 { arr[begin][i] = num + i - (n - 1 - end); arr[i][end] = num + (end-begin) + i - (n - 1 - end); arr[end][end - (i - (n - 1 - end))] = num + 2 * (end - begin)+i-(n-1-end); arr[end - (i - (n - 1 - end))][begin] = num + 3 * (end - begin)+i-(n-1-end); } num += 4 * (end - begin); begin++; end--; } if (n % 2 == 1) { arr[n / 2][n / 2] = n * n; } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { printf("%d ", arr[i][j]); } printf("\n"); } return 0; }