我的代码,满分
查看原帖
我的代码,满分
1640685
jason_2012楼主2025/1/13 15:15

#include <iostream>

#include <vector>



using namespace std;



int main() {

    int N;

    cin >> N;



    // 创建一个N×N的矩阵,初始化为0

    vector<vector<int>> magicSquare(N, vector<int>(N, 0));



    // 将1放在第一行中间

    int num = 1;

    int i = 0, j = N / 2;

    magicSquare[i][j] = num;



    // 依次填写剩余的数字

    for (num = 2; num <= N * N; ++num) {

        // 计算下一个位置

        int next_i = (i - 1 + N) % N;

        int next_j = (j + 1) % N;



        // 检查下一个位置是否已经填了数字

        if (magicSquare[next_i][next_j] == 0) {

            i = next_i;

            j = next_j;

        } else {

            i = (i + 1) % N;

        }



        // 填写数字

        magicSquare[i][j] = num;

    }



    // 输出幻方

    for (i = 0; i < N; ++i) {

        for (j = 0; j < N; ++j) {

            cout << magicSquare[i][j] << " ";

        }

        cout << endl;

    }



    return 0;

}

#include

#include

using namespace std;

int main() {

int N;

cin >> N;



// 创建一个N×N的矩阵,初始化为0

vector<vector<int>> magicSquare(N, vector<int>(N, 0));



// 将1放在第一行中间

int num = 1;

int i = 0, j = N / 2;

magicSquare[i][j] = num;



// 依次填写剩余的数字

for (num = 2; num <= N * N; ++num) {

    // 计算下一个位置

    int next_i = (i - 1 + N) % N;

    int next_j = (j + 1) % N;



    // 检查下一个位置是否已经填了数字

    if (magicSquare[next_i][next_j] == 0) {

        i = next_i;

        j = next_j;

    } else {

        i = (i + 1) % N;

    }



    // 填写数字

    magicSquare[i][j] = num;

}



// 输出幻方

for (i = 0; i < N; ++i) {

    for (j = 0; j < N; ++j) {

        cout << magicSquare[i][j] << " ";

    }

    cout << endl;

}



return 0;

}


2025/1/13 15:15
加载中...