Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int MAXN = 55;
- int dx[] = {-1, 0, 1, -1, 1, -1, 0, 1};
- int dy[] = {-1, -1, -1, 0, 0, 1, 1, 1};
- int h, w, ans;
- char gr[MAXN][MAXN];
- int timer = 1;
- int dp[MAXN][MAXN][26];
- int solved[MAXN][MAXN][26];
- int solve(int i, int j, int d, char c = 'A') {
- if (solved[i][j][d] == timer) return dp[i][j][d];
- int maxD = d;
- for (int k = 0; k < 8; ++k) {
- int ii = i + dx[k];
- int jj = j + dy[k];
- if (ii < 0 or jj < 0 or h <= ii or w <= jj or gr[ii][jj] != c+1) continue;
- maxD = max(maxD, solve(ii, jj, d+1, gr[ii][jj]));
- }
- solved[i][j][d] = timer;
- return dp[i][j][d] = maxD;
- }
- int main() {
- cin.tie(0)->sync_with_stdio(0);
- int tc = 1;
- while (cin >> h >> w and h) {
- for (int i = 0; i < h; ++i) {
- for (int j = 0; j < w; ++j) {
- cin >> gr[i][j];
- }
- }
- ++timer;
- ans = 0;
- for (int i = 0; i < h; ++i) {
- for (int j = 0; j < w; ++j) {
- if (gr[i][j] == 'A') {
- ans = max(ans, solve(i, j, 1, 'A'));
- }
- }
- }
- cout << "Case " << tc++ << ": " << ans << '\n';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment