java_day8
目标:Java web开发
问题:滑雪
import java.util.*;
class Main{
static Scanner sc=new Scanner(System.in);
static final int N=310;
static int h[][]=new int[N][N],f[][]=new int[N][N];
static int n,m;
static int dx[]={-1,1,0,0},dy[]={0,0,-1,1};//设置静态变量,各个函数共用,减少了代码量
static int dfs(int x,int y){
if (f[x][y]!=-1) return f[x][y];//以前搜到过就不再搜了,大大降低了搜索时间
f[x][y]=1;
for(int i=0;i<4;i++){
int a=x+dx[i],b=y+dy[i];
if(a>=0&&a<n&&b>=0&&b<m&&h[a][b]<h[x][y])
f[x][y]=Math.max(f[x][y],dfs(a,b)+1);
}
return f[x][y];
}
public static void main(String args[]){
for(int i=0;i<N;i++)
for(int j=0;j<N;j++) f[i][j]=-1;
n=sc.nextInt();
m=sc.nextInt();
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
h[i][j]=sc.nextInt();
int res=-1;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
res=Math.max(res,dfs(i,j));
System.out.println(res);
}
}
没错,水了。。。