提交时间:2024-08-21 15:42:15

运行 ID: 180531

#include <bits/stdc++.h> using namespace std; int n,x,y,a[12][12]; int dx[10]={2,1,-1,-2,1,2,-1,-2}; int dy[10]={1,2,-2,-1,-2,-1,2,1}; bool is; void dfs(int x,int y,int q){ if(q==n*n){ is=true; return; } for(int i=0;i<8;i++){ int cx=x+dx[i],cy=y+dy[i]; if(cx>0 && cx<=n && cy>0 && cy<=n && !a[cx][cy]){ a[cx][cy]=++q; dfs(cx,cy,q); q--; if(is)return; a[cx][cy]=0; } } } int main(){ cin >> n >> x >> y; a[x][y]=1; dfs(x,y,1); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) cout << a[i][j] << ' '; cout << '\n'; } return 0; }