Fuyuxin @ 2021-04-03 12:08:06
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int r,c,h[101][101],m[101][101],l,dx[4]={-1,0,0,1},dy[4]={0,-1,1,0};
int cnt(int x,int y){
if(m[x][y]) return m[x][y];
if(x>0&&x<=r&&y>0&&y<=c){
for(int i=0;i<4;i++)
if(h[x+dx[i]][y+dy[i]]<h[x][y])
m[x][y]=max(m[x][y],cnt(x+dx[i],y+dy[i])+1);
}
else return 0;
return m[x][y];
}
int main()
{
cin>>r>>c;
memset(h,-1,sizeof(h));
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
cin>>h[i][j];
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
l=max(l,cnt(i,j));
cout<<l;
return 0;
}
by 行级额年 @ 2021-04-05 15:35:30
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int r,c,h[101][101],m[101][101],l,dx[4]= {-1,0,0,1},dy[4]= {0,-1,1,0};
int cnt(int x,int y) {
if(m[x][y]) return m[x][y];
for(int i=0; i<4; i++) {
if(x+dx[i]>0&&x+dx[i]<=r&&y+dy[i]>0&&y+dy[i]<=c)
if(h[x+dx[i]][y+dy[i]]<h[x][y])
m[x][y]=max(m[x][y],cnt(x+dx[i],y+dy[i])+1);
}
// else return 0;
return m[x][y];
}
int main() {
cin>>r>>c;
memset(h,-1,sizeof(h));
for(int i=1; i<=r; i++)
for(int j=1; j<=c; j++)
cin>>h[i][j];
for(int i=1; i<=r; i++)
for(int j=1; j<=c; j++)
l=max(l,cnt(i,j));
cout<<l+1;
return 0;
}```cpp
by Fuyuxin @ 2021-04-10 08:49:56
@行级额年 好的懂了谢谢!!!