xiezihan @ 2020-07-18 11:50:26
#include<bits/stdc++.h>
using namespace std;
int a[1000][1000],vis[1000][1000];
int n,m;
int dfs(int x,int y)
{
if(vis[x][y]==1)
{
return vis[x][y];
}
int s=1;
vis[x][y]=1;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
for(int i=0;i<4;i++)
{
int tx,ty;
tx=x+dx[i];
ty=y+dy[i];
if(tx>0&&ty>0&&tx<=n&&ty<=m&&a[tx][ty]<a[x][y])
{
dfs(tx,ty);
vis[x][y]=max(vis[x][y],vis[tx][ty]+1);
}
}
return vis[x][y];
}
int main()
{
int t;
string name;
for(int j=1;j<=n;j++)
{
for(int k=1;k<=m;k++)
{
cin>>a[j][k];
}
}
int ans=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
ans=max(ans,dfs(i,j));
}
}
cout<<ans<<endl;
return 0;
}
同样的做法在UVA10285A了
by lion0514 @ 2020-07-18 12:13:45
@xiezihan dfs时要判断有没有算过
by lion0514 @ 2020-07-18 12:14:42
我记得rmj的题的时间限制和空间限制一向比主题库的大
by cyfff @ 2020-07-18 13:15:39
不T才怪
by 海陵中学罗昊 @ 2020-08-11 19:27:42
我判断了,省了90%的时间 但还是错的