题解 | 回型矩阵
回型矩阵
https://www.nowcoder.com/practice/36d5dfddc22c4f5b88a5b2a9de7db343
#include <stdio.h> int main() { int n = 0; scanf("%d", &n); int a[n][n]; int top = 0; int bottom = n - 1; int left = 0; int right = n - 1; int i = 0; int num = 1; while (top <= bottom) { //填充丄侧 for (i=left; i<=right; ++i) { a[top][i] = num; ++num; } ++top; //填充右侧 for (i=top; i<=bottom; ++i) { a[i][right] = num; ++num; } --right; //填充下侧 for (i=right; i>=left; --i) { a[bottom][i] = num; ++num; } --bottom; //填充左侧 for (i=bottom; i>=top; --i) { a[i][left] = num; ++num; } ++left; } for (i=0; i<n; ++i) { for (int j=0; j<n; ++j) { printf("%d ", a[i][j]); } printf("\n"); } return 0; }