void dfs(vector<vector<int>> &mat, vector<vector<int>> &des, int rol,int col,int m, int n, int &cnt)
{
// int rol,int col
// rol && col 字符打错了
if (mat[rol][col] == 1)
{
cnt++;
mat[rol][col] = 0;
for (int j = 0; j < 4; j++)
{
int x = rol + des[j][0];
int y = col + des[j][1];
if (x < m && x >= 0 && y < n && y >= 0 && mat[x][y] == 1)
{
dfs(mat, des, x, y, m, n, cnt);
}
}
}
}
int func( vector<vector<int>> mat)
{
int m = mat.size();
int n = mat[0].size();
deque<vector<int>> dq;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
if (mat[i][j] == 1){
dq.push_back({ i, j });
}
}
}
vector<vector<int>> des = { {-1,0 }, {1,0}, {0,-1}, {0,1} };
int mx = 0;
while (dq.size() != 0){
int sz = dq.size();
for (int i = 0; i < sz; i++)
{
int cnt = 0;
vector<int> tmp = dq.front();
int rol = tmp[0];
int col = tmp[1];
dq.pop_front();
if (mat[rol][col] == 1){
mat[rol][col] = 0;
cnt++;
}
for (int j = 0; j < 4; j++)
{
int x = rol + des[j][0];
int y = col + des[j][1];
if (x < m && x >= 0 && y < n && y >= 0 && mat[x][y] == 1)
{
dfs(mat, des, x,y,m, n,cnt);
}
}
mx = max(mx, cnt);
}
}
return mx;
}
int main() {
//# 输入:
//#[[0,1,0,0],
//# [1,0,1,0],
//# [0,1,1,1],
//# [0,0,1,0]]
//# 输出:
//# 6
vector<vector<int>> mat(4, vector<int>(4,-1));
mat = { { 0, 1, 0, 0 }, { 1, 0, 1, 0 }, { 0, 1, 1, 1 }, { 0, 0, 1, 0 } };
int res = func(mat);
cout << res << endl;
system("pause");
}
当时把rol,col 字符打错了。检查了半天。。。。。