Bu çevrimiçi yargıç olduğu yolu artan?Bulma en uzun <a href="https://leetcode.com/problems/longest-increasing-path-in-a-matrix/" rel="nofollow">https://leetcode.com/problems/longest-increasing-path-in-a-matrix/</a></p> <p>neden DFS kullanarak sonuç alamayan, bir matris
Her hücreden kaçarken, ya dört yöne geçin: sola, sağa, yukarı ya da aşağı.
En uzun yolun uzunluğunu saklayın.
/*
for each elem, neighbours dfs
*/
class Solution {
public:
int longestIncreasingPath(vector<vector<int>>& matrix) {
int row = matrix.size();
int col = matrix[0].size();
int x[] = {0,1,0,-1};// l-r -1,1
int y[] = {1,0,-1,0};// up-down +1,-1
int maxlen = 0;
for(int i = 0; i < row; i++){
for(int j = 0; j< col; j++){
// each node in the matrix[i][j], neighbours
int len = 0;
dfs(maxlen, len, i, j, x, y, matrix);
}
}
return maxlen;
}
private:
bool isIn(int x, int y, int row, int col){
if(x>=0&&x<=col && y>=0&&y<=row) return true;
else return false;
}
void dfs(int& maxlen, int len, int i, int j,int* x, int* y, vector<vector<int>> matrix){
int row = matrix.size();
int col = matrix[0].size();
for(int k = 0; k < 4; k++){
int i_t = i+x[k];//the current position
int j_t = j+y[k];
if(isIn(i_t,j_t,row,col)&& (matrix[i_t][j_t]>matrix[i][j])){ // if inside the matrix, within the boundary&& the value of (i_t,j_t)>
len+=1;
maxlen = max(len,maxlen);
dfs(maxlen, len, i_t, j_t, x, y, matrix);
}
}
}
};