AcWing 901. 滑雪
原题链接
简单
作者:
czawa
,
2021-09-15 07:59:58
,
所有人可见
,
阅读 185
#include <bits/stdc++.h>
using namespace std;
int dx[] = {0, 1, 0, -1};
int dy[] = {1, 0, -1, 0};
int h[1010][1010];
int n, m;
int f[1010][1010];
int dp(int x, int y)
{
int &v = f[x][y];
if (~ v) return v;
v = 1;
for(int i = 0; i < 4; i ++)
{
int a = dx[i] +x, b = dy[i]+y;
if(a>=1&&a<=n&&b>=1&&b<=m&& h[a][b]<h[x][y])v = max(v, dp(a, b) + 1);
}
return v;
}
int main()
{
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= m; j ++)
scanf("%d", &h[i][j]);
memset(f, -1, sizeof f);
int res=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
res = max(res, dp(i, j));
cout<<res<<endl;
return 0;
}