直接参考了discuss后面的代码。
int DP(int i,int j)
{
int Max=0;
if(dp[i][j]) return dp[i][j];
if(j>=1){
if(g[i][j]>g[i][j-1]){
if(Max<DP(i,j-1))
Max=DP(i,j-1);
}
}
if(j<c-1){
if(g[i][j]>g[i][j+1]){
if(Max<DP(i,j+1))
Max=DP(i,j+1);
}
}
if(i>=1){
if(g[i][j]>g[i-1][j]){
if(Max<DP(i-1,j))
Max=DP(i-1,j);
}
}
if(i<r-1){
if(g[i][j]>g[i+1][j]){
if(Max<DP(i+1,j))
Max=DP(i+1,j);
}
}
return dp[i][j]=Max+1;
}