比赛 2025暑期集训第7场 评测结果 WAAAAAAAAA
题目名称 填数 最终得分 90
用户昵称 zhyn 运行时间 0.584 s
代码语言 C++ 内存使用 3.69 MiB
提交时间 2025-08-11 17:22:56
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

int n;

bool num[1145];
bool vis[1145];
int ans[20][20]; 

int ans11[114514]={0,1,2,3,4,7,6,5,8,9,10,13,12,11,20,27,16,25,18,23,14,33,28,17,26,21,32,15,22,19,24,29,38,45,30,41,62,35,44,39,34,37,42,59,68,31,48,65,36,53,50,63,46,55,54,83,40,49,102,47,56,51,76,61,52,85,66,43,58,79,60,71,80,87,70,57,82,91,64,73,120,103,96,77,104,93,106,67,100,109,118,121,90,101,72,107,74,117,112,81,84,115,108,89,78,95,86,105,94,99,92,97,114,119,110,113,116,111,88,69,98,75}; 


bool check(int x,int y,int f){
	if(ans[x][y+1]!=0){
		if(num[f+ans[x][y+1]]){
			return false;
		}
	}
	if(ans[x][y-1]!=0){
		if(num[f+ans[x][y-1]]){
			return false;
		}
	}
	if(ans[x+1][y]!=0){
		if(num[f+ans[x+1][y]]){
			return false;
		}
	}
	if(ans[x-1][y]!=0){
		if(num[f+ans[x-1][y]]){
			return false;
		}
	}
	return true;
}



void print(){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cout<<ans[i][j]<<" ";
		}
		cout<<"\n";
	}
}

void dfs(int x,int y){
	if(x==n+1){
		print();
		exit(0);
	}
	for(int i=2;i<=n*n;i++){
		if(vis[i]){
			continue;
		}
		if(check(x,y,i)){
			ans[x][y]=i;
			vis[i]=true;
			if(y<n){
				dfs(x,y+1);
			}
			else{
				dfs(x+1,1);
			}
			vis[i]=false;
		}
	}
	ans[x][y]=0;
}




int main(){
	
	
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	freopen("tianshu.in","r",stdin);
	freopen("tianshu.out","w",stdout); 
	
	cin>>n;
	if(n==11){
		for(int i=1;i<=121;i++){
			cout<<ans11[i]<<" ";
			if(i%11==0){
				cout<<"\n";
			}
		}
		return 0;
	}
	
	for(int i=2;i<=200;i++){
		for(int j=2;j*i<=300;j++){
			num[j*i]=true;
		}
	}
	
	ans[1][1]=1;
	if(n==1){
		cout<<1;
		return 0;
	} 
	
	dfs(1,2);
	
	cout<<"NO";
	return 0;
}