第二个点TLE求助
查看原帖
第二个点TLE求助
219814
xiezihan楼主2020/7/18 11:50
#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了

2020/7/18 11:50
加载中...