题解
【基础】螺旋方阵
1 条题解
-
0
解题思路
输出 N×N 螺旋方阵,数字从 1 开始按顺时针螺旋填入。
用上下左右四个边界控制填充方向,一圈一圈往内填。
参考代码
#include <iostream> #include <iomanip> using namespace std; int main() { int n; cin >> n; int a[10][10] = {0}; int num = 1; int t = 0, b = n - 1, l = 0, r = n - 1; // 一圈一圈向内填数字 while (num <= n * n) { // 从左往右填上边 for (int j = l; j <= r; j++) a[t][j] = num++; t++; // 从上往下填右边 for (int i = t; i <= b; i++) a[i][r] = num++; r--; // 从右往左填下边 for (int j = r; j >= l; j--) a[b][j] = num++; b--; // 从下往上填左边 for (int i = b; i >= t; i--) a[i][l] = num++; l++; } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cout << setw(3) << a[i][j]; } cout << endl; } return 0; }O(N²) 时间,O(N²) 空间
- 1