力扣59
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> int** generateMatrix(int n, int* returnSize, int** returnColumnSizes) { int** nums = (int**)malloc(n * sizeof(int*)); for (int i = 0; i < n; i++) { nums[i] = (int*)malloc(n * sizeof(int)); } *returnSize = n; *returnColumnSizes = (int*)malloc(n * sizeof(int)); for (int i = 0; i < n; i++) { (*returnColumnSizes)[i] = n; } int start_x = 0, start_y = 0; int offset = 1; int count = 1; int loop = n / 2, mid = n / 2; while (loop--) { int j, i; for (j = start_y; j < n - offset; j++) { nums[start_x][j] = count++; } for (i = start_x; i < n - offset; i++) { nums[i][j] = count++; } for (; j > start_y; j--) { nums[i][j] = count++; } for (; i > start_x; i--) { nums[i][j] = count++; } start_x++; start_y++; offset += 1; } if (n % 2 == 1) { nums[mid][mid] = count; } return nums; } int main() { int n; scanf("%d", &n); int returnSize = 0; int* returnColumnSizes = NULL; int** nums = generateMatrix(n,&returnSize,&returnColumnSizes); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { printf("%d ", nums[i][j]); } printf("\n"); } }