sandeep03edu

Steps by Knight

Jul 7th, 2022
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.56 KB | None | 0 0
  1.  public:
  2.     long long large = 1e5;
  3.    
  4.     //Function to find out minimum steps Knight needs to reach target position.
  5.     long long getAns(int x, int y, int &xS, int &yS, int &xE, int &yE, int &N){
  6.         if(x<0 || y<0 || x>=N || y>=N){
  7.             return large;
  8.         }
  9.        
  10.         if(x==xE && y==yE){
  11.             return 0;
  12.         }
  13.        
  14.         long long ans = large;
  15.        
  16.         // Right2Up
  17.         ans = min(ans, min(large, getAns(x+2, y+1, xS, yS, xE, yE, N)+1));
  18.        
  19.         // Right2Down
  20.         ans = min(ans, min(large, getAns(x+2, y-1, xS, yS, xE, yE, N)+1));
  21.        
  22.         // Left2Up
  23.         ans = min(ans, min(large, getAns(x-2, y+1, xS, yS, xE, yE, N)+1));
  24.        
  25.         // Left2Down
  26.         ans = min(ans, min(large, getAns(x-2, y-1, xS, yS, xE, yE, N)+1));
  27.        
  28.         // Up2Right
  29.         ans = min(ans, min(large, getAns(x+1, y+2, xS, yS, xE, yE, N)+1));
  30.        
  31.         // Up2Left
  32.         ans = min(ans, min(large, getAns(x-1, y+2, xS, yS, xE, yE, N)+1));
  33.        
  34.         // Down2Right
  35.         ans = min(ans, min(large, getAns(x+1, y-2, xS, yS, xE, yE, N)+1));
  36.        
  37.         // Down2Left
  38.         ans = min(ans, min(large, getAns(x-1, y-2, xS, yS, xE, yE, N)+1));
  39.        
  40.         return ans;
  41.     }
  42.    
  43.     int minStepToReachTarget(vector<int>&KnightPos,vector<int>&TargetPos,int N)
  44.     {
  45.         // Code here
  46.         int xS = TargetPos[0]-1, yS = TargetPos[1]-1;
  47.         int xE = KnightPos[0]-1, yE = KnightPos[1]-1;
  48.        
  49.         long long ans = getAns(0,0,xS, yS, xE, yE, N);
  50.        
  51.         return ans;
  52.     }
Advertisement
Add Comment
Please, Sign In to add comment