最长递增路径
import java.util.*;
public class Solution {
public int maxLength;
public int solve (int[][] matrix) {
int[][] visited = new int[matrix.length][matrix[0].length];
for(int i=0; i<matrix.length;i++){
for(int j=0;j<matrix[0].length;j++){
dfs(matrix, visited, i, j, 0, -1);
}
}
return maxLength;
}
public void dfs(int[][] matrix, int[][] visited, int i, int j, int pathLength, int pre){
if(i<0||i>=matrix.length||j<0||j>=matrix[0].length||visited[i][j]==1||matrix[i][j]<=pre){
maxLength = Math.max(maxLength, pathLength);
return;
}
visited[i][j]=1;
dfs(matrix, visited, i-1, j, pathLength+1, matrix[i][j]);
dfs(matrix, visited, i+1, j, pathLength+1, matrix[i][j]);
dfs(matrix, visited, i, j-1, pathLength+1, matrix[i][j]);
dfs(matrix, visited, i, j+1, pathLength+1, matrix[i][j]);
visited[i][j]=0;
}
}