洛谷 P2615 神奇的幻方 (尚贤)

题目传送门

找题目模拟就行

#include <iostream>
#include <cstdio>
#define SIZE (int)39 + 10
using namespace std;
int map[SIZE][SIZE];

void f1(const int &);

int main() {
	freopen("cpp.in", "r", stdin);
	freopen("cpp.out", "w", stdout);
	scanf("%d", &map[0][0]);
	f1(map[0][0]);
	for (int i = 1; i <= map[0][0]; ++i) {
		for (int j = 1; j <= map[0][0]; ++j) {
			printf("%d ", map[i][j]);
		}
		printf("\n");
	}
	return 0;
}

void f1(const int &n) {
	int i = 1, j = (n >> 1) + 1;
	map[1][(n >> 1) + 1] = 1;
	for (int k = 2; k <= n * n; ++k) {
		if (i == 1 && j != n)
			i = n, ++j;
		else if (j == n && i != 1)
			j = 1, --i;
		else if (i == 1 && j == n)
			++i;
		else
			if (map[i - 1][j + 1] == 0)
				--i, ++j;
			else
				++i;
		map[i][j] = k;
	}
}
发布了33 篇原创文章 · 获赞 0 · 访问量 167

猜你喜欢

转载自blog.csdn.net/weixin_42790071/article/details/105539844