AcWing 901. 滑雪 java
原题链接
简单
作者:
莫得感情的刷题机器
,
2020-08-17 14:01:22
,
所有人可见
,
阅读 537
java 代码
import java.util.*;
public class Main{
static int N=310;
static int [][] f=new int[N][N];
static int[][] a=new int[N][N];
static int r;
static int c;
public static void main(String [] args){
Scanner sc=new Scanner(System.in);
r=sc.nextInt();
c=sc.nextInt();
for(int i=0;i<r;i++) for(int j=0;j<c;j++) a[i][j]=sc.nextInt();
for(int i=0;i<r;i++) Arrays.fill(f[i],-1);
int res=0;
for(int i=0;i<r;i++)
for(int j=0;j<c;j++)
res=Math.max(res,dp(i,j));
System.out.println(res);
}
public static int dp(int i,int j){
if(f[i][j]!=-1) return f[i][j];
f[i][j]=1;
int[] dir={-1,0,1,0,-1};
for(int k=0;k<4;k++){
if(i+dir[k]>=0&&i+dir[k]<r&&j+dir[k+1]>=0&&j+dir[k+1]<c&&a[i][j]>a[i+dir[k]][j+dir[k+1]]){
f[i][j]=Math.max(f[i][j],dp(i+dir[k],j+dir[k+1])+1);
}
}
return f[i][j];
}
}