WA1,8,9,10求助
查看原帖
WA1,8,9,10求助
378301
Gxy77楼主2024/11/28 21:14
#include<bits/stdc++.h>
using namespace std;
int r,c,f=0;
int dp[110][110];
int n[110][110];
struct gz{
	int h;
	int x,y;
}gq[10010];
int a[5]={0,1,-1,0,0};
int b[5]={0,0,0,1,-1};
bool cmp(gz a,gz b)
{
	return a.h<b.h;
}
int main()
{
	memset(n,0,sizeof(n));
	memset(dp,0,sizeof(dp));
	cin>>r>>c;
	for(int i=1;i<=r;i++)
	{
		for(int j=1;j<=c;j++)
		{
			dp[i][j]=1;
		    f++;
		    cin>>gq[f].h;
			n[i][j]=gq[f].h;
		    gq[f].x=i;
		    gq[f].y=j;  
		}
	}
	sort(gq+1,gq+f+1,cmp);
	for(int i=1;i<=f;i++)
	{
		for(int j=1;j<=4;j++){
			int nx=gq[i].x;
			int ny=gq[i].y;
			if(n[nx][ny]<n[nx+a[j]][ny+b[j]])
			{
				if(nx+a[j]>0&&nx+a[j]<=r&&ny+b[j]>0&&ny+b[j]<=c)
				    dp[nx+a[j]][ny+b[j]]=max(dp[nx][ny]+1,dp[nx+a[j]][ny+b[j]]);
			}  
		} 
	}
	int ans=-1;
	for(int i=1;i<=f;i++)
	    ans=max(ans,dp[gq[f].x][gq[f].y]);
	cout<<ans;
	return 0; 
}
2024/11/28 21:14
加载中...