Untitled

 avatar
unknown
plain_text
19 days ago
1.2 kB
2
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;
        
    }
};
Leave a Comment