🚀 Simple Approach Using Backtracking 🚀 [Step by Step Explanation]
🚀 Approach
We first run a traversal through the grid to find water cells.
When we find a water cell we need to go to all possible directions
left , right , up a
# 🚀 Approach

- We first run a traversal through the grid to find water cells.
- When we find a water cell we need to go to all possible directions 
`left` , `right` , `up` and `down`.
- Until we keep finding water cells we keep adding them in our fishes count.
- Lastly we use `maximumFishes` to count the maximum number of fishes from a cell. 

# 💻 Implementation
```cpp []
class Solution {
public:
    int findMaxFish(vector<vector<int>>& grid) {
        int maximumFishes = 0;
        for (int row = 0; row < grid.size(); row++) {
            for (int col = 0; col < grid[row].size(); col++) {
                if (grid[row][col] > 0) {
                    int fishes = backtrack(grid, row, col);
                    maximumFishes = max(fishes, maximumFishes);
                }
            }
        }
        return maximumFishes;
    }

    int backtrack(vector<vector<int>>& grid, int row, int col) {
        if (row < 0 || row >= grid.size() || col < 0 || col >= grid[row].size() || grid[row][col] == 0) {
            return 0;
        }
        int cnt = grid[row][col];
        grid[row][col] = 0;
        cnt += backtrack(grid, row + 1, col); // Up
        cnt += backtrack(grid, row - 1, col); // Down
        cnt += backtrack(grid, row, col + 1); // Right
        cnt += backtrack(grid, row, col - 1); // Left
        return cnt;
    }
};
```
['Array', 'Backtracking', 'C++']