比赛 20151207初中练习 评测结果 AAAAAAAAAA
题目名称 神奇的幻方 最终得分 100
用户昵称 Ceres 运行时间 0.004 s
代码语言 C++ 内存使用 0.34 MiB
提交时间 2015-12-07 19:39:06
显示代码纯文本
#include <fstream>
using namespace std;
int n,nf,mc[40][40],nn[1600][3];
ifstream ci("2015magic.in");
ofstream co("2015magic.out");
int main()
{
	ci>>n;
	nf=n*n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			mc[i][j]=0;
	mc[1][n/2+1]=1;
	nn[1][1]=1;nn[1][2]=n/2+1;
	for(int i=1;i<=nf-1;i++)
	{
		if(nn[i][1]==1 && nn[i][2]!=n)
		{
			mc[n][nn[i][2]+1]=i+1;
			nn[i+1][1]=n;nn[i+1][2]=nn[i][2]+1;
		}
		else
		{
			if(nn[i][1]!=1 && nn[i][2]==n)
			{
				mc[nn[i][1]-1][1]=i+1;
				nn[i+1][1]=nn[i][1]-1;nn[i+1][2]=1;
			}
			else
			{
				if(nn[i][1]==1 && nn[i][2]==n)
				{
					mc[nn[i][1]+1][nn[i][2]]=i+1;
					nn[i+1][1]=nn[i][1]+1;nn[i+1][2]=nn[i][2];
				}
				else
					if(nn[i][1]!=1 && nn[i][2]!=n)
					{
						if(mc[nn[i][1]-1][nn[i][2]+1]==0)
						{
							mc[nn[i][1]-1][nn[i][2]+1]=i+1;
							nn[i+1][1]=nn[i][1]-1;nn[i+1][2]=nn[i][2]+1;
						}
						else
						{
							mc[nn[i][1]+1][nn[i][2]]=i+1;
					        nn[i+1][1]=nn[i][1]+1;nn[i+1][2]=nn[i][2];
						}
					}
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
			co<<mc[i][j]<<' ';
		co<<endl;
	}
	ci.close();
	co.close();
	return 0;
}