我油来问水题了(已完结)

#include <iostream>
#include <vector>

using namespace std;

vector<vector<int>> f(int n) {
    vector<vector<int>> matrix(n, vector<int>(n));
    int num = 1;
    int top = 0, bottom = n - 1, left = 0, right = n - 1;

    while (num <= n * n) {
        // 从左到右填充上边
        for (int i = left; i <= right; ++i) {
            matrix[top][i] = num++;
        }
        ++top;

        // 从上到下填充右边
        for (int i = top; i <= bottom; ++i) {
            matrix[i][right] = num++;
        }
        --right;

        // 从右到左填充下边
        for (int i = right; i >= left; --i) {
            matrix[bottom][i] = num++;
        }
        --bottom;

        // 从下到上填充左边
        for (int i = bottom; i >= top; --i) {
            matrix[i][left] = num++;
        }
        ++left;
    }

    return matrix;
}

int main() {
    int n;
    cin >> n;

    vector<vector<int>> result = f(n);

    // 输出结果
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            cout << result[i][j];
            if (j < n - 1) {
                cout << " ";
            }
        }
        cout << endl;
    }

    return 0;
}

4 个赞

这是什么代码?

1 个赞

什么什么代码

4 个赞

你发的,哦忘记说了,此贴已结

1 个赞

thanks for your help @桑铃茜

1 个赞