AcWing 1111. 字母
原题链接
简单
作者:
小.bug
,
2022-05-20 16:50:26
,
所有人可见
,
阅读 137
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef pair<int,int> pii;
const int N = 25;
const int dx[4] = {1,0,-1,0};
const int dy[4] = {0,-1,0,1};
unordered_map<char,bool> st;
char g[N][N];
int n, m;
int cnt,res;
void dfs(int x, int y)
{
st[g[x][y]] = true;
cnt++;
res = max(res,cnt);
for(int k = 0; k < 4; k++)
{
int nx = x + dx[k], ny = y + dy[k];
if(nx >= 0 && nx < n && ny >= 0 && ny < m)
{
if(!st[g[nx][ny]]) dfs(nx,ny);
}
}
cnt--;
st[g[x][y]] = false;
}
int main()
{
cin >> n >> m;
for(int i = 0; i < n; i++) cin >> g[i];
dfs(0,0);
cout << res << endl;
return 0;
}