记忆化60WA1 5 8 10
查看原帖
记忆化60WA1 5 8 10
1111300
ayszYW楼主2024/5/25 13:35

代码如下

#include<bits/stdc++.h>
using namespace std;
#define int long long
int r,c,arr[1000][1000],ans=0,v[1000][1000];

int dfs(int a,int b,int st,int l){
	if(arr[a][b]>=l)return st;
	if(a<1||a>r||b<1||b>c)return st;
	if(v[a][b])return v[a][b]+st;
	
	
	
	v[a][b]=max(max(dfs(a+1,b,st+1,arr[a][b]),dfs(a-1,b,st+1,arr[a][b])),max(dfs(a,b-1,st+1,arr[a][b]),dfs(a,b+1,st+1,arr[a][b])));
	return v[a][b];
	
	
}





signed main(){
	cin>>r>>c;
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++)cin>>arr[i][j];
	}
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			ans=max(ans,dfs(i,j,0,9999999999999));
		}
	}
	cout<<ans;
}
2024/5/25 13:35
加载中...