Untitled
unknown
plain_text
9 months ago
1.2 kB
4
Indexable
class Solution {
public:
int dx[4] = {0 , 0 , 1 , -1}, dy[4] = {1, -1, 0, 0};
bool isValid(int x, int y , int n , int m) {
if(x < 0 || y < 0 || x >= n || y >= m)return false;
return true;
}
int dfs(int x, int y, vector<vector<int>>& grid, int n , int m, vector<vector<bool>>& visited) {
if(grid[x][y] == 0)return 0;
int sum = grid[x][y];
visited[x][y] = true;
for(int i=0;i<4;i++) {
int next_x = x + dx[i];
int next_y = y + dy[i];
if(isValid(next_x, next_y, n , m) && !visited[next_x][next_y]) {
sum+=dfs(next_x, next_y, grid, n , m, visited);
}
}
grid[x][y] = 0;
return sum;
}
int findMaxFish(vector<vector<int>>& grid) {
int n = grid.size() , m = grid[0].size(), ans = 0;
vector<vector<bool>> visited(n, vector<bool>(m, false));
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
if(grid[i][j] == 0 || visited[i][j])continue;
ans = max(ans, dfs(i , j, grid, n , m, visited));
}
}
return ans;
}
};Editor is loading...
Leave a Comment