洛谷1434-记忆化搜索
题目传送门 https://www.luogu.org/problemnew/show/P1434
1 #include<queue> 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 using namespace std; 6 int vis[110][100],mp[110][110],r,c; 7 int dir[4][4]={{1,0},{0,1},{-1,0},{0,-1}}; 8 int cmax=0,step,sum; 9 int dfs(int x,int y) 10 { 11 if(vis[x][y]) return vis[x][y]; 12 vis[x][y]=1; 13 for(int i=0;i<4;i++) 14 { 15 int tx=x+dir[i][0]; 16 int ty=y+dir[i][1]; 17 if(mp[tx][ty]<mp[x][y]&&tx>=1&&tx<=r&&ty>=1&&ty<=c) 18 { 19 vis[x][y]=max(vis[x][y],1+dfs(tx,ty)); 20 } 21 } 22 return vis[x][y]; 23 } 24 int main() 25 { 26 cin>>r>>c; 27 for(int i=1;i<=r;i++) 28 for(int j=1;j<=c;j++) 29 cin>>mp[i][j]; 30 for(int i=1;i<=r;i++) 31 for(int j=1;j<=c;j++) 32 sum=max(dfs(i,j),sum); 33 cout<<sum<<endl; 34 }