本文主要是介绍noj skiing,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
import java.util.*;
public class Main
{
static int max,sum;
static int h[][]=new int[1002][1002];
//static int a[][]=new int[1002][1002];//这个打算打表优化的,AC了就没用上。
static void dfs(int h[][],int i,int j)
{
if(h[i][j]<h[i+1][j]&&h[i][j]<h[i][j-1]&&h[i][j]<h[i-1][j]&&h[i][j]<h[i][j+1])
{
max=max<sum?sum:max;
}
else
{
for(int k=0;k<4;k++)
{
switch(k)
{
case 0:if(h[i][j]>h[i][j+1]) {sum++;dfs(h,i,j+1);sum--;};break;
case 1:if(h[i][j]>h[i+1][j]) {sum++;dfs(h,i+1,j);sum--;};break;
case 2:if(h[i][j]>h[i][j-1]) {sum++;dfs(h,i,j-1);sum--;};break;
case 3:if(h[i][j]>h[i-1][j]) {sum++;dfs(h,i-1,j);sum--;};break;
}
}
}
}
public static void main(String args[])
{
Scanner cin=new Scanner(System.in);
int n=cin.nextInt();
while(n!=0)
{
max=1;n--;
int r=cin.nextInt();
int c=cin.nextInt();
for(int i=0;i<=r+1;i++) h[i][0]=h[i][c+1]=32767;
for(int j=1;j<=c;j++) h[0][j]=h[r+1][j]=32767;
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
h[i][j]=cin.nextInt();
for(int i=1;i<=r;i++)
{
for(int j=1;j<=c;j++)
{
sum=1;
dfs(h,i,j);
}
}
System.out.printf("%d\n",max);
}
}
}
这篇关于noj skiing的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!