Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
180662 | 黄一航 | 骑士遍历2 | C++ | 解答错误 | 0 | 61 MS | 244 KB | 706 | 2024-08-21 17:14:00 |
#include<bits/stdc++.h> using namespace std; int n,a,b; bool vis[11][11],f=false; int fx[]={-1,-2,-2,-1,1,2,2,1}; int fy[]={2,1,-1,-2,-2,-1,1,2}; int k[11][11]; bool ifp(int x,int y){ if(x<1||y<1||x>n||y>n) return false; if(vis[x][y]) return false; return true; } void dfs(int x,int y,int step){ k[x][y]=step; vis[x][y]=1; if(step==n*n){ if(!f){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cout << k[i][j] << " "; } cout << endl; } } f=true; return; } for(int i=0;i<8;i++){ int dx=x+fx[i],dy=y+fy[i]; if(ifp(dx,dy)) dfs(dx,dy,step+1); } vis[x][y]=0; return; } int main(){ cin >> n >> a >> b; dfs(a,b,1); return 0; }