lixx @ 2019-05-16 07:05:22
#include<iostream>
#include<cstdio>
using namespace std;
long long int xx[5]={0,0,1,-1};
long long int yy[5]={1,-1,0,0};
long long int a[101][101],t[101][101],n,p,zx,zy;
int zzd;
int zd=0;
int jyh(long int x,long int y)
{
if(t[x][y]>0)
{
return t[x][y];
}
zzd=1;
for(int i=0;i<4;i++)
{
zx=x+xx[i];
zy=y+yy[i];
if(zx<n&&zy<p&&zx>=0&&zy>=0&&a[x][y]>a[zx][zy])
{
zzd=max(jyh(zx,zy)+1,zzd);
}
}
t[x][y]=zzd;
return t[x][y];
}
int main()
{
cin>>n>>p;
for(int i=0;i<n;i++)
{
for(int j=0;j<p;j++)
{
cin>>a[i][j];
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<p;j++)
{
zd=max(jyh(i,j),zd);
}
}
cout<<zd<<endl;
return 0;
}
by 亲爱的王先生 @ 2019-05-16 07:44:10
可以再开个vis数组来判断是否访问过了。zzd完全可以改成t[x][y]。不然说不定会出些奇奇怪怪的问题
by lixx @ 2019-05-17 17:24:16
Thanks! Fuck you
by lixx @ 2019-05-17 17:25:02
sorry 刚才我儿子乱打