oc13 @ 2019-07-16 18:37:57
求助大神!!!
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int dx[]= {0,0,1,-1};
int dy[]= {1,-1,0,0};
long long h[105][105];
long long v[105][105];
int r,c;
long long hx(int a,int b) {
long long l=1;
if(v[a][b]) return v[a][b];
v[a][b]=1;
for(int i=0; i<4; i++) {
int x=a+dx[i];
int y=b+dy[i];
if(x>0&&x<=r&&y>0&&y<=c&&h[x][y]<h[a][b])
l=max(l,(h[x][y]+1)),hx(x,y);
}
return v[a][b]=l;
}
int main() {
long long ans=1;
cin>>r>>c;
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++) {
ans=max(ans,hx(i,j));
}
cout<<ans;
return 0;
}
by 灵光一闪 @ 2019-07-16 19:01:38
@oc13 不一定从最高的点走就是最优鸭。 比如:
1 1 1 8 7
1 9 1 5 6
1 1 1 4 3
answer:6