1 solutions
-
4
#include <bits/stdc++.h> #define int long long using namespace std; int n,m; int a[105][105]={}; bool vst[105][105]={}; //是否走过 int mx=0; int step[105][105]={}; //dp数组 int sx[]={0,0,1,-1}; int sy[]={1,-1,0,0}; //这两个是走的方向 void dfs(int x,int y){ if(vst[x][y]) return; vst[x][y]=1; for(int i=0;i<4;i++){ int xx=x+sx[i]; int yy=y+sy[i]; //下一步坐标 if(!(xx<0||yy<0||xx>=n||yy>=m)&&a[xx][yy]<a[x][y]){ dfs(xx,yy); //开始走 step[x][y]=max(step[x][y],step[xx][yy]+1); //更新dp数组 } } mx=max(mx,step[x][y]); //更新最大值 } signed main(){ cin>>n>>m; for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin>>a[i][j]; for(int i=0;i<n;i++) for(int j=0;j<m;j++) dfs(i,j); //每个点都要跑一遍 cout<<mx+1<<"\n"; return 0; }
雪(意味深
- 1
Information
- ID
- 427
- Time
- 1000ms
- Memory
- 125MiB
- Difficulty
- 3
- Tags
- # Submissions
- 77
- Accepted
- 22
- Uploaded By