#include <bits/stdc++.h>
using namespace std;
#define REP(i,n) for(int i=1;i<=(n);i++)
const int maxn = 100 + 5;
int T, n, m, dp[maxn][maxn], inp[maxn][maxn];
string str;
int DP(int i, int j)
{
if (dp[i][j] != -1) return dp[i][j];
else dp[i][j] = 1;
if (j > 1 && inp[i][j] > inp[i][j - 1]) dp[i][j] = max(dp[i][j], DP(i, j - 1) + 1);
if (i > 1 && inp[i][j] > inp[i - 1][j]) dp[i][j] = max(dp[i][j], DP(i - 1, j) + 1);
if (j < m && inp[i][j] > inp[i][j + 1]) dp[i][j] = max(dp[i][j], DP(i, j + 1) + 1);
if (i < n && inp[i][j] > inp[i + 1][j]) dp[i][j] = max(dp[i][j], DP(i + 1, j) + 1);
return dp[i][j];
}
int solve()
{
int ans = 0;
memset(dp, -1, sizeof(dp));
REP(i, n) REP(j, m) ans = max(ans, DP(i, j));
return ans;
}
int main(int argc, char const *argv[])
{
cin >> T;
while (T--)
{
cin >> str >> n >> m;
REP(i, n) REP(j, m) cin >> inp[i][j];
cout << str << ": " << solve() << endl;
}
return 0;
}
uva 10285 动规
最新推荐文章于 2021-02-05 07:32:09 发布