package main
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 递增路径的最大长度
* @param matrix int整型二维数组 描述矩阵的每个数
* @return int整型
*/
func solve( matrix [][]int ) int {
result:=make([]int,0)
visit:=make([][]bool,len(matrix))
for i:=range visit{
visit[i]=make([]bool,len(matrix[0]))
}
for i:=0;i<len(matrix);i++{
for j:=0;j<len(matrix[0]);j++{
dfs(i,j,visit,0,matrix,&result)
}
}
max:=0
for _,v:=range result{
if v>max{
max=v
}
}
return max
}
func dfs(x,y int,visit [][]bool,path int,matrix [][]int,result *[]int){
if visit[x][y]==true{
*result=append(*result, path)
return
}
path++
visit[x][y]=true
isMax:=true
if x-1>=0&&matrix[x-1][y]>matrix[x][y]{
dfs(x-1, y, visit, path, matrix, result)
isMax=false
}
if y-1>=0&&matrix[x][y-1]>matrix[x][y]{
dfs(x, y-1, visit, path, matrix, result)
isMax=false
}
if x+1<len(matrix)&&matrix[x+1][y]>matrix[x][y]{
dfs(x+1, y, visit, path, matrix, result)
isMax=false
}
if y+1<len(matrix[0])&&matrix[x][y+1]>matrix[x][y]{
dfs(x, y+1, visit, path, matrix, result)
isMax=false
}
if isMax{
*result=append(*result, path)
}
visit[x][y]=false
path--
}