姚菜
2026-10-11 11:20:02
发布于:北京
2阅读
0回复
0点赞
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m;
int al[101][101],memery[101][101],vis[101][101];
int dx[4]={0,-1,0,1},dy[4]={1,0,-1,0};
int dfs(int x,int y)
{
vis[x][y]=1;
if(memery[x][y]!=0)return memery[x][y];
int maxn=0;
for(int i=0;i<4;i++)
{
int nx=x+dx[i],ny=y+dy[i];
if(nx>=1&&ny>=1&&nx<=n&&ny<=m&&al[nx][ny]<al[x][y])
{
if(vis[nx][ny]!=0){
maxn=max(maxn,memery[nx][ny]);
}
else
maxn=max(maxn,dfs(nx,ny));
}
}
return memery[x][y]=maxn+1;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>al[i][j];
}
}
int maxn=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
memset(vis,0,sizeof(vis));
vis[i][j]=1;
maxn=max(maxn,dfs(i,j));
}
}
cout<<maxn<<endl;
return 0;
}
// 小猴编程(9079849193253205)
请点个赞
这里空空如也






有帮助,赞一个