Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
179651 | 刘睿甫 | 骑士遍历1 | C++ | 通过 | 100 | 0 MS | 256 KB | 734 | 2024-08-21 12:46:02 |
#include<cmath> #include<cstdio> #include<queue> #include<string> #include<cstring> #include<iomanip> #include<iostream> #include<algorithm> using namespace std; int road[100]; int dx[5]= {0,1,2,2,1}; int dy[5]= {0,-2,-1,1,2}; int flag; int ex,ey; void dfs(int x,int y,int k) { if(flag==1) { return; } if(x==ex&&y==ey) { flag=1; for(int i=0; i<k; i++) { cout<<road[i]<<" "; } return; } if((ey-y)>2*(ex-x)){ return; } for(int i=1; i<=4; i++) { int nx=x+dx[i]; int ny=y+dy[i]; if(!flag&&nx>=1&&nx<=ex&&ny>=1&&ny<=ey) { road[k]=i; dfs(nx,ny,k+1); } } return ; } int main() { cin>>ex>>ey; dfs(1,1,0) ; if(flag==0){ cout<<-1; } return 0; }