0pts 求助orz
查看原帖
0pts 求助orz
817450
Calarence4楼主2023/10/16 21:12

刚开始写记忆化搜索,不会写,求调

#include<bits/stdc++.h>
using namespace std;

int R,C;
int h[105][105];
int mem[105][105];
int dx[4]={0,0,-1,+1},dy[4]={-1,+1,0,0};//上下左右
int dfs(int,int);
int main(){
	cin>>R>>C;
	for(int i=1;i<=R;i++){
		for(int j=1;j<=C;j++){
			cin>>h[i][j];
		}
	}
	memset(mem,-1,sizeof(mem));
	int Max=0;
	for(int i=1;i<=R;i++){
		for(int j=1;j<=C;j++){
			Max=max(Max,dfs(i,j));
		}
	}
	cout<<Max;
}
int dfs(int r,int c){
	if(mem[r][c]!=-1){
		return mem[r][c];
	}
	if(h[r][c]<=0){
		return 0;
	}
	for(int i=0;i<4;i++){
		if(h[r+dx[i]][c+dy[i]]<h[r][c]){
			mem[r][c]=dfs(r+dx[i],c+dy[i]);
			return	mem[r][c];
		}
	}
	mem[r][c]=0;
	return 0;
}
2023/10/16 21:12
加载中...