4347: GESP C++四级样题_4填幻方

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

样例输入 复制

3

样例输出 复制

8 1 6
3 5 7
4 9 2

提示

#include<bits/stdc++.h>
using namespace std;
int cube[21][21];
int main() {
    int n = 0;
    cin >> n;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            cube[i][j] = 0; // 清空正方形图表
    int x = 0, y = n / 2;
    cube[x][y] = 1; // 第 1 步,第一行正中填写 1
    for (int d = 2; d <= n * n; d++) {
        int nx = (x + n - 1) % n;
        int ny = (y + 1) % n; // 第 2 步,向右上移动一格
        if (cube[nx][ny] != 0) {
            nx = (x + 1) % n; // 第 3 步,如果第 2 步失败,向下移动一格
            ny = y;
        }
    cube[nx][ny] = d; // 填写下一个数字
    x = nx;
    y = ny;
    }
    for (int i = 0; i < n; i++) { // 输出幻方
        cout << cube[i][0];
        for (int j = 1; j < n; j++)
        cout << " " << cube[i][j];
        cout << endl;
    }
    return 0;
}