# Question

Formatted question description: https://leetcode.ca/all/329.html

 329	Longest Increasing Path in a Matrix

Given an integer matrix, find the length of the longest increasing path.

From each cell, you can either move to four directions: left, right, up or down.
You may NOT move diagonally or move outside of the boundary (i.e. wrap-around is not allowed).

Example 1:

Input: nums =
[
[9,9,4],
[6,6,8],
[2,1,1]
]
Output: 4
Explanation: The longest increasing path is [1, 2, 6, 9].

Example 2:

Input: nums =
[
[3,4,5],
[3,2,6],
[2,2,1]
]
Output: 4
Explanation: The longest increasing path is [3, 4, 5, 6]. Moving diagonally is not allowed.



# Algorithm

Maintain a two-dimensional dynamic array dp, where dp[i][j] represents the length of the longest incremental path starting from (i,j) in the array, and initially assigns all dp arrays to 0.

When we call recursively and encounter a certain position (x, y), if dp[x][y] is not 0, we can directly return dp[x][y] without repeating calculations.

We need to call recursion with each position in the array as the starting point to do so, and compare to find the maximum value. When searching with DFS starting from a position, judge its four adjacent positions. If the value of the adjacent position is greater than the previous position, continue to call recursion on the adjacent position and update a maximum value, and the search is completed After returning.

Java