#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int& check(vector >& board,int& n,int& x,int& y,int i,int j,int& moves){ // cout<<"x,y "<-1&&y+j-1&&board[x+i][y-j]==0){ x=x+i;y=y-j; //c3=check(board,n,x,y,i,j,++moves); moves=min(moves,check(board,n,x,y,i,j,++moves)); if(board[n-1][n-1]==1){ return moves;} } else if(x-i>-1&&y-j>-1&&board[x-i][y-j]==0){ x=x-i;y=y-j; // c4=check(board,n,x,y,i,j,++moves); moves=min(moves,check(board,n,x,y,i,j,++moves)); if(board[n-1][n-1]==1) {return moves;} } case 1:int temp=i;i=j;j=temp; if(x+i-1&&y+j-1&&board[x+i][y-j]==0){ x=x+i;y=y-j; //c7=check(board,n,x,y,i,j,++moves); moves=min(moves,check(board,n,x,y,i,j,++moves)); if(board[n-1][n-1]==1) {return moves;} } else if(x-i>-1&&y-j>-1&&board[x-i][y-j]==0){ { x=x-i;y=y-j; //c8=check(board,n,x,y,i,j,++moves); moves=min(moves,check(board,n,x,y,i,j,++moves)); } if(board[n-1][n-1]==1) {return moves;} } else{ moves=32000;} } } // cout<> n; int i=3,j=3; for(int i=1;i > board(n,vector(n,0)); int move=0,x=0,y=0; auto k=check(board,n,x,y,i,j,move); if(board[n-1][n-1]!=1){cout<<-1<<" ";}else{cout<