寄忆化求调 玄关
查看原帖
寄忆化求调 玄关
1121087
czy032321054楼主2024/8/2 16:04
#include<bits/stdc++.h>
using namespace std;
int r,c,a[110][110],dx[4]={1,-1,0,0},dy[4]={0,0,1,-1},f[110][110];
int dfs(int x,int y){
	if(f[x][y]!=-1)return f[x][y];
	f[x][y]=0;
	int ans=-2e9;
	for(int i=1;i<=r;i++)
		for(int j=1;j<=c;j++)
			for(int k=0;k<4;k++)
				if(a[i+dx[k]][j+dy[k]]>a[i][j]&&i+dx[k]>=1&&i+dx[k]<=r&&j+dy[k]>=1&&j+dy[k]<=c)
					ans=max(ans,dfs(i+dx[k],j+dy[k]));
	if(ans==-2e9)ans=-1;
	ans++;
	return f[x][y]=ans;
}
int main(){
	cin>>r>>c;
	for(int i=1;i<=r;i++)
		for(int j=1;j<=c;j++)
			cin>>a[i][j],f[i][j]=-1;
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			bool b=0;
			for(int k=0;k<4;k++)
				if(a[i+dx[k]][j+dy[k]]<a[i][j]&&i+dx[k]>=1&&i+dx[k]<=r&&j+dy[k]>=1&&j+dy[k]<=c){
					b=1;
					break;
				}
			if(b)continue;
			f[i][j]=dfs(i,j);
		}
	}
	int ans=-2e9;
	for(int i=1;i<=r;i++) 
		for(int j=1;j<=c;j++)
			ans=max(ans,f[i][j]);
	cout<<ans;
}
2024/8/2 16:04
加载中...