#include<iostream>
#include<cstdio>
using namespace std;
int ans = 0;
int r,c;
int height[502][502];
int mem[502][502] = {0};
int changex[4] = {-1, 1, 0, 0};
int changey[4] = {0, 0, -1, 1};
int dfs(int x, int y){
if(mem[x][y]){
return mem[x][y];
}
int maxx = 0;
for(int i = 0;i < 4;i++){
int xx = x + changex[i];
int yy = y + changey[i];
int hh = 0;
if(height[xx][yy] < height[x][y]){
hh = dfs(xx,yy);
}
hh++;
if(hh > maxx){
maxx = hh;
}
}
mem[x][y] = maxx;
return maxx;
}
int main(){
cin>>r>>c;
for(int i = 0;i <= r + 1;i++){
for(int j = 0;j <= c + 1;j++){
height[i][j] = 0x3f3f3f3f;
mem[i][j] = 0;
}
}
for(int i = 1;i <= r;i++){
for(int j = 1;j <= c;j++){
cin>>height[i][j];//输入
}
}
for(int i = 1;i <= r;i++){
for(int j = 1;j <= c;j++){
int h = dfs(i,j);
if(h > ans){
ans = h;
}
}
}
cout<<ans<<endl;//输出
return 0;
}
清帝之惑之顺治c++代码
最新推荐文章于 2024-10-07 19:01:55 发布
本文详细描述了如何使用C++编程语言实现深度优先搜索算法,解决在给定二维数组表示的地形中找到从左上角到右下角的最大高度路径问题。
摘要由CSDN通过智能技术生成