80分,WA*2求助
查看原帖
80分,WA*2求助
400205
basachenboming楼主2022/1/7 22:16
#include<bits/stdc++.h>
using namespace std;
int a[201][201];
int n,m;
int maxx[201][201]={-1};
inline int read() 
{
    int x=0,f=1;
    char c=getchar();
    while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}
    while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
    return x*f;
}
int k;
int check; 
void dfs(int tot,int x,int y)
{
            k=tot;
            check=0;
			if(maxx[x][y]<tot)
			{
				maxx[x][y]=tot;
			}
			if(a[x-1][y]<a[x][y]&&maxx[x-1][y]<=tot&&x-1>0&&x-1<=n&&y>0&&y<=m)
			{
				dfs(tot+1,x-1,y);
			}
			if(a[x+1][y]<a[x][y]&&maxx[x+1][y]<=tot&&x+1>0&&x+1<=n&&y>0&&y<=m)
			{
				dfs(tot+1,x+1,y);
			}
			if(a[x][y-1]<a[x][y]&&maxx[x][y-1]<=tot&&x>0&&x<=n&&y-1>0&&y-1<=m)
			{
				dfs(tot+1,x,y-1);
			}
			if(a[x][y+1]<a[x][y]&&maxx[x][y+1]<=tot&&x>0&&x<=n&&y+1>0&&y+1<=m)
			{
				dfs(tot+1,x,y+1);
			}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
	for(int j=1;j<=m;j++)
	{
		a[i][j]=read();
	}
}
int ans=0;
for(int i=1;i<=n;i++)
{
	for(int j=1;j<=m;j++)
	{
	dfs(1,i,j);
	ans=max(ans,k);
	}
}
cout<<ans;
return 0;
}
2022/1/7 22:16
加载中...