#include using namespace std; #define MAXN 200 #define INF 1005 int n; int dp[MAXN+5][MAXN+5]; int col[6] = {-1,1,2,1,-1,-2}; int row[6] = {-2,-2,0,2,2,0}; string res[6] = {"UL","UR","R","LR","LL","L"}; int nex[MAXN+5][MAXN+5]; bool visited[MAXN+5][MAXN+5]; bool valid(int x, int y){ if(x<0 or y<0 or x>= n or y >= n)return false; return true; } int rekur(int x, int y, int i_end, int j_end){ if(x==i_end and y==j_end)return 0; int &ret = dp[x][y]; if(ret != INF)return ret; if(visited[x][y])return ret; visited[x][y] = true; //cout< rekur(x+row[i],y+col[i],i_end,j_end)+1){ ret = rekur(x+row[i],y+col[i],i_end,j_end)+1; nex[x][y] = i; } } return ret; } void printShortestPath(int n, int i_start, int j_start, int i_end, int j_end) { // Print the distance along with the sequence of moves. if(rekur(i_start,j_start,i_end,j_end) >= INF){ cout<<"Impossible"<> n; for(int i = 0; i <= n; i++){ for(int j = 0; j <= n; j++){ dp[i][j] = INF; } } int i_start; int j_start; int i_end; int j_end; cin >> i_start >> j_start >> i_end >> j_end; printShortestPath(n, i_start, j_start, i_end, j_end); return 0; }