Untitled

 avatar
unknown
java
a year ago
1.6 kB
8
Indexable
public class Solution {

  static boolean knightsTourHelper(int n,int m, int a[][], int movesX[],int movesY[], int curX, int curY, int step) {

        if(step == n*m) return true;

        for(int i = 0; i<8; i++) {
            int nextX = curX + movesX[i];
            int nextY = curY + movesY[i];
            if(isValid(n,m, a, nextX, nextY)) {
                a[nextX][nextY] = step;
                boolean isTourCompletedByGoingThere =
                        knightsTourHelper(n,m, a, movesX, movesY, nextX, nextY, step+1);
                if(isTourCompletedByGoingThere) {
                    return true;
                } else {
                    a[nextX][nextY] = -1;
                }
            }
        }

        return false;
    }

    static boolean isValid(int n,int m, int a[][], int x, int y) {
        return x >= 0 && y >= 0 && x < n && y < m && a[x][y] == -1;
    }
  
    public static int[][] knightTour(int n, int m) {
        //You can code here

        int a[][] = new int[n][m];
        for(int i = 0; i<n; i++) {
            for(int j = 0; j<m; j++) {
                a[i][j] = -1;
            }
        }
        a[0][0] = 0;
        int movesX[] = {2, 1, -1, -2, -2, -1, 1, 2};
        int movesY[] = {1, 2, 2, 1, -1, -2, -2, -1};

        boolean res=knightsTourHelper(n,m, a, movesX, movesY, 0, 0, 1);

        if(res)
        return a;
        else{
for(int i = 0; i<n; i++) {
            for(int j = 0; j<m; j++) {
                a[i][j] = -1;
            }

            
        }
return a;
        }


        
        
    }
}
Editor is loading...
Leave a Comment