/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 递增路径的最大长度
* @param matrix int整型二维数组 描述矩阵的每个数
* @return int整型
*/
function solve(matrix) {
// write code here
let n = matrix.length;
if (n == 0) {
return 0;
}
let m = matrix[0].length;
let p = [];
for (let i = 0; i < n; i++) {
p.push([]);
for (let j = 0; j < m; ++j) {
p[i].push(0);
}
}
let xx = [-1, 1, 0, 0], yy = [0, 0, 1, -1];
function dfs(x, y) {
for (let i = 0; i < 4; ++i) {
let nx = x + xx[i], ny = y + yy[i];
// 检查边界和是否递增
if (nx >= 0 && nx < n && ny >= 0 && ny < m && matrix[nx][ny] > matrix[x][y]) {
let dp = dfs(nx, ny) + 1;
p[x][y] = dp > p[x][y] ? dp : p[x][y];
}
}
return p[x][y];
}
let ans = 0;
for (let i = 0; i < n; i++) {
for (let j = 0; j < m; ++j) {
let dp = dfs(i, j) + 1;
ans = ans > dp ? ans : dp;
}
}
return ans;
}
module.exports = {
solve: solve
};