1 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N=110; int dx[4]={1,-1,0,0}; int dy[4]={0,0,1,-1}; int a[N][N],f[N][N],n,m; int dfs(int x,int y) //dfs(x,y)表示从点x,y出发最多可以滑过多少个点(包括出发点) { if(f[x][y]!=0) return f[x][y]; int t=0; for(int i=0;i<=3;i++) { int xx=x+dx[i]; int yy=y+dy[i]; if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&a[x][y]>a[xx][yy]) t=max(t,dfs(xx,yy)); } return f[x][y]=t+1; } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++)for(int j=1;j<=m;j++) scanf("%d",&a[i][j]); int ans=0; for(int i=1;i<=n;i++)for(int j=1;j<=m;j++) ans=max(ans,dfs(i,j)); printf("%d",ans); return 0; }
- 1
信息
- ID
- 864
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 226
- 已通过
- 62
- 上传者