问题描述
输入输出
C++代码(含注释)
#include<bits/stdc++.h>
using namespace std;
int f(vector<vector<char>>& arr, int x, int y, int n, int m) {
char c = arr[x][y];
int len = 0;
while(1) {
//向右上、左上、中下三个方向搜索并延申(len的增加使得搜索的长度变长)
int dx[] = { -1 - len, -1 - len, 1 + len};
int dy[] = { 1 + len, -1 - len, 0};
bool flag = true;
for(int i = 0; i < 3; i++) {
int tx = x + dx[i];
int ty = y + dy[i];
if(tx < 0 || tx >= n || ty < 0 || ty >= m || arr[tx][ty] != c) {
flag = false;
break;
}
}
if(flag == false) {
break;
}
len++;
}
return len;
}
int main() {
int n, m;
cin >> n >> m;
vector<vector<char>> arr(n, vector<char>(m));
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
cin >> arr[i][j];
}
}
int res = 0;
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
res = max(res, f(arr, i, j, n, m));
}
}
cout << res;
return 0;
}