各种颜色都有……
#include <iostream>
using namespace std;
long long r, c;
long long a[102][102];
long long ans[502][502];
long long dx[4] = {1, -1, 0, 0};
long long dy[4] = {0, 0, 1, -1};
long long ski(long long x, long long y)
{
if (ans[x][y] != 0)
{
return ans[x][y];
}
if (x < 1 || x > r || y < 1 || y > c)
{
return 0;
}
for (int i = 0; i < 4; ++i)
{
int xx = x + dx[i], yy = y + dy[i];
if ((a[xx][yy] < a[x][y]) && (xx < 1 || xx > r || yy < 1 || yy > c))
{
ans[xx][yy] = ski(xx, yy);
ans[x][y] = max(ans[x][y], ans[xx][yy] + 1);
return ans[x][y];
}
}
}
int main()
{
cin >> r >> c;
long long maxn = 0;
for (long long i = 1; i <= r; ++i)
{
for (long long j = 1; j <= c; ++j)
{
cin >> a[i][j];
}
}
if (r == 1 && c == 1)
{
cout << 0;
return 0;
}
for (long long i = 1; i <= r; ++i)
{
for (long long j = 1; j <= c; ++j)
{
maxn = max(maxn, ski(i, j));
}
}
cout << maxn;
return 0;
}