DFS solytion
Code

# Code
```java []
class Solution {
    public int findMaxFish(int[][] grid) {

        int maxFishyFishies = 0;
        boolean[][] visited = new boolean[grid.length][grid[0].length]; //dont modify input

        for(int i = 0; i < grid.length; i++){
            for(int j = 0; j < grid[0].length; j++){
                if(visited[i][j] || grid[i][j] == 0)
                    continue;
                maxFishyFishies = Math.max(maxFishyFishies, howManyFishyFishies(grid,i,j, visited));
            }
        }
        return maxFishyFishies;
    }

    public int howManyFishyFishies(int[][] grid, int i, int j, boolean[][] visited){
        if(i < 0 || j < 0 || i >= grid.length || j >= grid[0].length || grid[i][j] == 0 || visited[i][j])
            return 0;
        visited[i][j] = true;
        int total = grid[i][j];
        total += howManyFishyFishies(grid, i+1,j,visited);
        total += howManyFishyFishies(grid, i-1,j,visited);
        total += howManyFishyFishies(grid, i,j+1,visited);
        total += howManyFishyFishies(grid, i,j-1,visited);
        return total;
    }
}
```
['Java']