洛谷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 }

 

posted @ 2019-05-04 16:55  liter_wave  阅读(76)  评论(0编辑  收藏  举报