Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public:
- long long large = 1e5;
- //Function to find out minimum steps Knight needs to reach target position.
- long long getAns(int x, int y, int &xS, int &yS, int &xE, int &yE, int &N){
- if(x<0 || y<0 || x>=N || y>=N){
- return large;
- }
- if(x==xE && y==yE){
- return 0;
- }
- long long ans = large;
- // Right2Up
- ans = min(ans, min(large, getAns(x+2, y+1, xS, yS, xE, yE, N)+1));
- // Right2Down
- ans = min(ans, min(large, getAns(x+2, y-1, xS, yS, xE, yE, N)+1));
- // Left2Up
- ans = min(ans, min(large, getAns(x-2, y+1, xS, yS, xE, yE, N)+1));
- // Left2Down
- ans = min(ans, min(large, getAns(x-2, y-1, xS, yS, xE, yE, N)+1));
- // Up2Right
- ans = min(ans, min(large, getAns(x+1, y+2, xS, yS, xE, yE, N)+1));
- // Up2Left
- ans = min(ans, min(large, getAns(x-1, y+2, xS, yS, xE, yE, N)+1));
- // Down2Right
- ans = min(ans, min(large, getAns(x+1, y-2, xS, yS, xE, yE, N)+1));
- // Down2Left
- ans = min(ans, min(large, getAns(x-1, y-2, xS, yS, xE, yE, N)+1));
- return ans;
- }
- int minStepToReachTarget(vector<int>&KnightPos,vector<int>&TargetPos,int N)
- {
- // Code here
- int xS = TargetPos[0]-1, yS = TargetPos[1]-1;
- int xE = KnightPos[0]-1, yE = KnightPos[1]-1;
- long long ans = getAns(0,0,xS, yS, xE, yE, N);
- return ans;
- }
Advertisement
Add Comment
Please, Sign In to add comment