P1434
记录
#include <iostream>
#include <algorithm>
using namespace std;
int n, m;
int a[105][105], f[105][105];
int dx[] = { 1,0,-1,0 };
int dy[] = { 0,1,0,-1 };
int dfs(int x, int y) {
if (f[x][y] != 0) {
return f[x][y];
}
f[x][y] = 1;
for (int i = 0; i < 4; i++) {
int xx = x + dx[i];
int yy = y + dy[i];
if (xx > n || yy > m || xx < 1 || y < 1)continue;
if (a[x][y] <= a[xx][yy])continue;
dfs(xx, yy);
f[x][y] = max(f[x][y], f[xx][yy] + 1);
}
return f[x][y];
}
int main()
{
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> a[i][j];
}
}
int maxn = 0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
maxn = max(maxn, dfs(i, j));
}
}
cout << --maxn;
}