提交时间:2024-08-21 16:02:56

运行 ID: 180559

#include <bits/stdc++.h> using namespace std; int n,sx,sy; int a[105][105]; int dx[]={-1,-2,-2,-1,1,2,2,1}; int dy[]={2,-1,1,-2,2,1,-1,-2}; bool f; void dfs(int x,int y,int cnt){ if(cnt==n*n){ f=1; return ; } for(int i=0;i<8;i++){ int nx=x+dx[i],ny=y+dy[i]; if(nx>0 && nx<=n && ny>0 && ny<=n && !a[nx][ny]){ cnt++; a[nx][ny]=cnt; dfs(nx,ny,cnt); if(f)return ; cnt--; a[nx][ny]=0; } } } int main(){ cin>>n>>sx>>sy; a[sx][sy]=1; dfs(sx,sy,1); if(f){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cout<<a[i][j]<<" "; } cout<<endl; } } else cout<<"no answer"; return 0; }