70分求助
查看原帖
70分求助
260644
傻狗凉楼主2021/10/18 19:42
#include <bits/stdc++.h>
using namespace std;
int m,n,s,ans;
int dp[105][105];
int mp[105][105];
struct A{
	int x;
	int y;
	int hg;
}mt[10005];
int cmp(A a,A b)
{
	return a.hg<b.hg;
}
int fnd(int x,int y)
{
	if(mp[x+1][y]<mp[x][y]) dp[x][y]=max(dp[x][y],dp[x+1][y]+1);
	if(mp[x-1][y]<mp[x][y]) dp[x][y]=max(dp[x][y],dp[x-1][y]+1);
	if(mp[x][y+1]<mp[x][y]) dp[x][y]=max(dp[x][y],dp[x][y+1]+1);
	if(mp[x][y-1]<mp[x][y]) dp[x][y]=max(dp[x][y],dp[x][y-1]+1);
	return dp[x][y];
}
int main(){
	cin>>m>>n;
	for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j)
		{
			cin>>mp[i][j];
			dp[i][j]=1;
			mt[s].x=i;
			mt[s].y=j;
			mt[s++].hg=mp[i][j]; 
		}
	sort(mt,mt+s,cmp);
	for(int i=0;i<s;++i)
		ans=max(ans,fnd(mt[i].x,mt[i].y));
	cout<<ans<<endl;
	return 0;
}
2021/10/18 19:42
加载中...