1 条题解
-
0
#include<bits/stdc++.h> using namespace std; int dx[]={1,-1,0,0}; int dy[]={0,0,1,-1}; int r,c,ans; int g[1005][1005]; int dis[1005][1005]; //返回从x,y最长走多长 int dfs(int x,int y){ if(dis[x][y]!=0) return dis[x][y]; int res=1; for(int i=0;i<4;i++){ int nx=x+dx[i]; int ny=y+dy[i]; if(1<=nx&&nx<=r&& 1<=ny&&ny<=c&& g[x][y]%g[nx][ny]==0&& g[x][y]>g[nx][ny]) res=max(res,dfs(nx,ny)+1); } return dis[x][y]=res; } int main() { cin>>r>>c; for(int i=1;i<=r;i++) for(int j=1;j<=c;j++) cin>>g[i][j]; ans=1; for(int i=1;i<=r;i++) for(int j=1;j<=c;j++) ans=max(ans,dfs(i,j)); cout<<ans<<"\n"; return 0; }
- 1
信息
- ID
- 1138
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 69
- 已通过
- 30
- 上传者