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