记录编号 |
604760 |
评测结果 |
ATAAAAAAAA |
题目名称 |
101.填数 |
最终得分 |
90 |
用户昵称 |
我也不知道 |
是否通过 |
未通过 |
代码语言 |
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;
}