JAVA DFS Easy To Understand
\n    public int orderOfLargestPlusSign(int N, int[][] mines) {\n        boolean[][] matrix = new boolean[N][N];\n        for (int i = 0; i < N; i++){\n        
\n    public int orderOfLargestPlusSign(int N, int[][] mines) {\n        boolean[][] matrix = new boolean[N][N];\n        for (int i = 0; i < N; i++){\n            for (int j = 0; j < N; j++){\n                matrix[i][j] = true;\n            }\n        }\n        for (int[] mine: mines){\n            matrix[mine[0]][mine[1]] = false;\n        }\n        int max = 0;\n        for (int i = 0; i < N; i++){\n            for (int j = 0; j < N; j++){\n                if (i < max || j < max || i > N-max-1 || j > N-max-1)\n                    continue;\n                int tmp = explore(matrix, i, j, N);\n                max = Math.max(tmp, max);\n            }\n        }\n        return max;\n    }\n    private int explore(boolean[][] matrix, int i, int j, int N){\n        if (!matrix[i][j])\n            return 0;\n        int order = 1;\n        while ((i-order>=0) && (j-order>=0) && (i+order<N) && (j+order<N) && (matrix[i-order][j]) && (matrix[i+order][j]) && (matrix[i][j-order]) && (matrix[i][j+order])){\n            order++;\n        }\n        return order;\n    }
[]