| 比赛 | 
    20151207初中练习 | 
    评测结果 | 
    AAAAAAAAAA | 
    | 题目名称 | 
    神奇的幻方 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    ミント | 
    运行时间 | 
    0.005 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    0.32 MiB  | 
    | 提交时间 | 
    2015-12-07 19:29:56 | 
显示代码纯文本
#include <fstream>
#include <algorithm>
#include <string>
#include <cstring>
using namespace std;
ifstream fin("2015magic.in");
ofstream fout("2015magic.out");
const int maxn = 39 + 1;
int map[maxn][maxn];
int n;
int main()
{
	memset(map, 0, sizeof(map));
	
	fin>>n;
	
	int x = 1;
	int y = (n+1)/2;
	
	map[x][y] = 1;
	
	for(int i=2;i<=n*n;i++)
	{
		if(x==1&&y!=n)
		{
			x = n;
			y += 1;
			map[x][y] = i;
			continue;
		}
		if(x!=1&&y==n)
		{
			x -= 1;
			y = 1;
			map[x][y] = i;
			continue;
		}
		if(x==1&&y==n)
		{
			x += 1;
			map[x][y] = i;
			continue;
		}
		if(map[x-1][y+1]==0)
		{
			x -= 1;
			y += 1;
			map[x][y] = i;
			continue;
		}
		else
		{
			x += 1;
			map[x][y] = i;
			continue;
		}
	}
	
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
			fout<<map[i][j]<<' ';
		fout<<endl;
	}
	
	fin.close();
	fout.close();
	
	return 0;
}