Fishing trip

Given a 2d array filled with numbers indicating fish, plan a trip from 0,0 cell to n-1,m-1 cell maximizing the number of fish picked along the way.

Solution

  • The key concept here is: for cell x,y pick max(fish(x,y-1), fish(x-1,y))
  • Do this in a DP way storing the intermediate values in a matrix until we reach the last n-1,m-1 cell

Code

def fishing_trip(matrix)
    max_fish = [[0]*n]*m

    max_fish[0][0] = matrix[0][0]
    for i in 0..m do
        for j in 0..n do
            if matrix[i][j] != -1 # Not an obstacle
                max_fish[i][j] += max((i==0 ? 0 : matrix[i-1][j]), (j==0 ? 0 : matrix[i][j-1]))
            end
        end
    end

    return max_fish[m-1][n-1]
end

Time complexity

  • O(mn) due to the 2 loops for iterating over the matrix.

results matching ""

    No results matching ""