提交时间:2024-03-30 14:26:13

运行 ID: 140318

#include<bits/stdc++.h> using namespace std; const int dx[4] = {-1,1,0,0}; //增量数组 const int dy[4] = {0,0,-1,1}; int f[1000][1000],lfs[1000][1000],n,m,maxn; int sb(int x,int y){ if(f[x][y]!=0)return f[x][y]; else{ for(int i=0;i<4;i++){ int nx=x+dx[i]; int ny=y+dy[i]; if(nx<=n&&nx>0&&ny>0&&ny<=m&&lfs[x][y]>lfs[nx][ny]){ f[x][y]=max(f[x][y],sb(nx,ny)+1); } } return f[x][y]; } } int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>lfs[i][j]; } } for(int i=1;i<=n;i++){ for(int p=1;p<=m;p++)maxn=max(maxn,sb(i,p)); } cout<<maxn+1; }