Untitled
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; } };
Leave a Comment