hanzuorui @ 2022-07-18 09:53:08
#include <stdio.h>
int w[105][105],cnt,max;
bool flag[105][105];
int R,C;
bool check(int o,int p,int q,int r)
{
if(flag[q][r]==1||q<1||r<1||q>R||r>C||w[o][p]<=w[q][r])
{
return 0;
}
return 1;
}
void dfs(int m,int n)
{
if(check(m,n,m,n+1)==1)
{
flag[m][n+1]=1;
cnt++;
if(cnt>max)
{
max=cnt;
}
dfs(m,n+1);
flag[m][n+1]=0;
cnt--;
}
if(check(m,n,m+1,n)==1)
{
flag[m+1][n]=1;
cnt++;
if(cnt>max)
{
max=cnt;
}
dfs(m+1,n);
flag[m+1][n]=0;
cnt--;
}
if(check(m,n,m,n-1)==1)
{
flag[m][n-1]=1;
cnt++;
if(cnt>max)
{
max=cnt;
}
dfs(m,n-1);
flag[m][n-1]=0;
cnt--;
}
if(check(m,n,m-1,n)==1)
{
flag[m-1][n]=1;
cnt++;
if(cnt>max)
{
max=cnt;
}
dfs(m-1,n);
flag[m-1][n]=0;
cnt--;
}
}
int main()
{
scanf("%d%d",&R,&C);
for(int i=1;i<=R;i++)
{
for(int j=1;j<=C;j++)
{
scanf("%d",&w[i][j]);
}
}
for(int i=1;i<=R;i++)
{
for(int j=1;j<=C;j++)
{
/*if(max==R*C)
{
printf("%d",max);
return 0;
}*/
for(int k=1;k<=R;k++)
{
for(int l=1;l<=C;l++)
{
flag[k][l]=0;
}
}
cnt=1;
flag[i][j]=1;
dfs(i,j);
}
}
printf("%d",max);
return 0;
}