top1编程
← 返回题目
题解

【基础】螺旋方阵

1 条题解

  • 0
    @ 2026-7-31 9:33:38

    解题思路

    输出 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