50求调
查看原帖
50求调
1066780
PYCMONSTER楼主2024/10/21 14:04
#include<bits/stdc++.h>//P1434
using namespace std;

int n,m,a[1001][1001],cnt[1001][1001];
int X[5]={1,0,-1,0},Y[5]={0,1,0,-1};

int dfs(int x,int y){
	
	if(x>n||y>m||x<1||y<1)return 0;
	int ans=1,ma=-10;
	for(int i=0;i<=3;i++)
	{
		int xx=x+X[i],yy=y+Y[i]; 
		if(a[xx][yy]<a[x][y])
		if(cnt[xx][yy]!=0)ma=max(ma,cnt[xx][yy]);
		else ma=max(ma,dfs(xx,yy));
	}
	return ans+ma; 
}

int main()
{
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	int mx=-10;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			cin>>a[i][j]; 
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			cnt[i][j]=dfs(i,j),mx=max(mx,cnt[i][j]);
	cout<<mx;
	return 0;
} 
2024/10/21 14:04
加载中...