Yikara @ 2021-08-23 08:35:45
#include<bits/stdc++.h>
using namespace std;
int Map[105][105],maxans=-99999;
int r,c;
void dfs(int x,int y,int ans){
maxans=max(ans,maxans);
if(Map[x-1][y]<Map[x][y])dfs(x-1,y,ans+1);
if(Map[x+1][y]<Map[x][y])dfs(x+1,y,ans+1);
if(Map[x][y+1]<Map[x][y])dfs(x,y+1,ans+1);
if(Map[x][y-1]<Map[x][y])dfs(x,y-1,ans+1);
return;
}
int main(){
cin>>r>>c;
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
cin>>Map[i][j];
}
}
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
dfs(i,j,0);
}
}
cout<<maxans;
return 0;
}
by aSunnyDay @ 2021-08-23 08:42:05
dfs(i,j,1)把
by aSunnyDay @ 2021-08-23 08:42:59
这题要用记忆化搜索
f[i][j]代表i行j列开始划最多能划多少路程
by aSunnyDay @ 2021-08-23 08:43:40
你的dfs没有判断越界的情况
by aSunnyDay @ 2021-08-23 08:44:11
初始的时候x数组全部变成INF
然后输入试试看,应该就对了,但是不加记忆化可能会超时
by aSunnyDay @ 2021-08-23 08:44:21
@JoeBiden2020
by sc84bbs @ 2021-08-23 08:45:47
我们认为这是正常的