提交时间:2024-08-21 16:28:30

运行 ID: 180603

#include<bits/stdc++.h> using namespace std; int fx[]={-2,-1,1,2}; int fy[]={1,2,2,1}; int a,b; int k[10001]; bool f=false; bool vis[10001][10001]; void dfs(int x,int y,int step,int fangwei){ if(vis[x][y]) return; if(x<1||y<1||x>a||y>b) return; if(fangwei) k[step]=fangwei; vis[x][y]=1; if(x==a&&y==b){ if(!f) for(int i=2;i<=step;i++) cout << k[i] << " "; f=true; return; } for(int i=0;i<4;i++){ dfs(x+fx[i],y+fy[i],step+1,i+1); } vis[x][y]=0; return; } int main(){ cin >> b >> a; dfs(1,1,1,0); if(!f) cout << -1; return 0; }