ALC 提示:抄代码可不是什么良好的习惯 \Huge \textrm{\color{red}ALC 提示:抄代码可不是什么良好的习惯} ALC 提示:抄代码可不是什么良好的习惯
代码制作不易 , 给个赞谢谢喵 a w a \Huge \color{navy}代码制作不易,给个赞谢谢喵 awa 代码制作不易,给个赞谢谢喵awa

 AC 记录 \Huge \textrm{\color{darkblue} AC 记录}  AC 记录

这道题其实是属于 GESP 等级考试中比较简单的一类了 qaq

由于题目已经给了我们方法,所以我们可以直接写代码

#include <bits/stdc++.h>
using namespace std;
int ans[25][25];
int n, cnt = 1;
bool fullfill(int ans[25][25]) { // 判断数组是否填满
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= n; j++) {
            if(!ans[i][j]) return false;
        }
    }
    return true;
}
int main() {
    cin >> n;
    int x = 1, y = n / 2 + 1;
    ans[x][y] = 1;
    while(!fullfill(ans)) {
        if(!ans[((x == 1) ? n : x - 1)][((y == n) ? 1 : y + 1)]) { // 判断如果 x 等于 1 , 则返回 1 , 否则返回 x -  1, 后面的同理,只不过是返回 y + 1
        	ans[((x == 1) ? n : x - 1)][((y == n) ? 1 : y + 1)]	= cnt + 1; // cnt 是记录此时的数 , 然后坐标解释同上
        	x = ((x == 1) ? n : x - 1);
        	y = ((y == n) ? 1 : y + 1);
        	cnt++;
		} else {
			ans[((x == n) ? 1 : x + 1)][y] = cnt + 1;
			x = ((x == n) ? 1 : x + 1);
			cnt++;
		}
	}
	for(int i = 1; i <= n; i++) {
		for(int j = 1; j <= n; j++) {
			cout << ans[i][j] << ' '; // 输出数组
		}
		cout << endl;
	}
}

这样一份简单易懂的代码就写好了 awa , 你学会了吗?

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐