class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 递增路径的最大长度 * @param matrix int整型vector<vector<>> 描述矩阵的每个数 * @return int整型 */ int m, n; vector<vector<int>> f, w; int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1}; int dp(int x, int y) { auto &v = f[x][y]; if (v != -1) return v; v = 1; for (int i = 0; i < 4; i++) { int a = x + dx[i], b = y + dy[i]; if (a >= 0 && a < m && b >= 0 && b < m && w[x][y] < w[a][b]) { v = max(v, dp(a, b) + 1); } } return v; } int solve(vector<vector<int> >& matrix) { if (matrix.empty() || matrix[0].empty()) return 0; w = matrix; m = w.size(), n = w[0].size(); f = vector<vector<int>> (m, vector<int> (n, - 1)); int ans = 0; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { ans = max(ans, dp(i, j)); } } return ans; } };