题意
题目链接
找到图上相邻的水块的和最大值
思路
找到水块,dfs或者bfs找到连着的水块和。取最大值
代码
class Solution {
public:
int findMaxFish(vector<vector<int>>& grid) {
int ans = 0;
for (int i = 0; i < grid.size(); i++)
for (int j = 0; j < grid[i].size(); j++)
if (grid[i][j])
{
int tmp = grid[i][j];
grid[i][j] = 0;
queue<pair<int, int>> q;
q.push(make_pair(i, j));
while (!q.empty())
{
const static int x_add[] = {1, -1, 0, 0};
const static int y_add[] = {0, 0, 1, -1};
const pair<int, int> &index = q.front();
for (int k = 0; k < 4; k++)
{
const int x = index.first + x_add[k];
const int y = index.second + y_add[k];
if (0 <= x && x < grid.size() && 0 <= y && y <grid[i].size() && grid[x][y])
{
tmp += grid[x][y];
grid[x][y] = 0;
q.push(make_pair(x, y));
}
}
q.pop();
}
ans = max(ans, tmp);
}
return ans;
}
};
``