AcWing 901. 滑雪
原题链接
简单
作者:
喝水大王
,
2020-03-15 19:25:09
,
所有人可见
,
阅读 596
#include<stdio.h>
#define N 310
#define max(a, b) a > b ? a : b
int n, m, ans, h[N][N], f[N][N];
int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
int dp(int x, int y)
{
if(f[x][y]) return f[x][y];
else f[x][y] = 1;
for(int i = 0; i < 4; i++)
{
int xx = x + dx[i], yy = y + dy[i];
if(xx >= 1 && xx <= n && yy >= 1 && yy <= m && h[x][y] > h[xx][yy])
f[x][y] = max(f[x][y], dp(xx, yy) + 1);
}
return f[x][y];
}
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]);
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
ans = max(ans, dp(i, j));
printf("%d", ans);
return 0;
}