记录编号 604760 评测结果 ATAAAAAAAA
题目名称 101.填数 最终得分 90
用户昵称 Gravatar我也不知道 是否通过 未通过
代码语言 C++ 运行时间 4.051 s
提交时间 2025-08-11 17:38:47 内存使用 3.62 MiB
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int shu[15][15]= {0},mmm=0,num=0,N;
bool visit[300]= {0};
int panduan(int x,int y) {
	int b=2;
	if(x==y) return 1;
	while(b*b<=x) {
		if(x%b==0)return 0;
		b++;
	}
	return 1;
}
int shifou(int x,int y,int z) {
	int b=panduan(z+shu[x-1][y],z)+panduan(z+shu[x][y-1],z);
	if(b==2) return 1;
	return 0;
}
int ddd(int n,int m) {
    if(mmm==1) return 0;
	if(n>N&&mmm==0) {
	    mmm=1;
	    num=1;
		for(int i=1; i<=N; i++) {
			for(int j=1; j<=N; j++) cout<<shu[i][j]<<" ";
			cout<<endl;
		}
		return 0;
	} else {
		for(int i=1; i<=N*N; i++)
        if(visit[i]==0&&shifou(n,m,i)==1) {
				shu[n][m]=i;
				visit[i]=1;
				if(m==N) ddd(n+1,1);
				else ddd(n,m+1);
				if(mmm==1) return 0;
				visit[i]=0;
				shu[n][m]=0;
			}
			
			
	}
	return 0;
}
int main() {
	freopen("tianshu.in","r",stdin);
	freopen("tianshu.out","w",stdout);
	cin>>N;
	if(N==1) {
	    cout<<"NO";
	    return 0;
    }
	ddd(1,1);
	if(num==0) cout<<"NO";
	return 0;
}