101 Logo
onenoughtone

Problem Statement

Cherry Pickup II

You are given a rows x cols matrix grid representing a field of cherries where grid[i][j] represents the number of cherries that you can collect from the (i, j) cell.

You have two robots that can collect cherries for you:

  • Robot #1 is located at the top-left corner (0, 0), and
  • Robot #2 is located at the top-right corner (0, cols - 1).

Return the maximum number of cherries collection using both robots by following the rules below:

  • From a cell (i, j), robots can move to cell (i + 1, j - 1), (i + 1, j), or (i + 1, j + 1).
  • When any robot passes through a cell, It picks up all cherries, and the cell becomes an empty cell.
  • When both robots stay in the same cell, only one takes the cherries.
  • Both robots cannot move outside of the grid at any moment.
  • Both robots should reach the bottom row in grid.

Examples

Example 1:

Input: grid = [[3,1,1],[2,5,1],[1,5,5],[2,1,1]]
Output: 24
Explanation: Path of robot #1 and #2 are described in color green and blue respectively. Cherries taken by Robot #1, (3 + 2 + 5 + 2) = 12. Cherries taken by Robot #2, (1 + 5 + 5 + 1) = 12. Total of cherries: 12 + 12 = 24.

Example 2:

Input: grid = [[1,0,0,0,0,0,1],[2,0,0,0,0,3,0],[2,0,9,0,0,0,0],[0,3,0,5,4,0,0],[1,0,2,3,0,0,6]]
Output: 28
Explanation: Path of robot #1 and #2 are described in color green and blue respectively. Cherries taken by Robot #1, (1 + 2 + 2 + 0 + 1) = 6. Cherries taken by Robot #2, (1 + 3 + 0 + 4 + 6) = 14. Cherries taken by both robots, (0 + 0 + 9 + 5 + 3) = 17. Total of cherries: 6 + 14 - 9 = 28.

Constraints

  • rows == grid.length
  • cols == grid[i].length
  • 2 <= rows, cols <= 70
  • 0 <= grid[i][j] <= 100

Problem Breakdown

To solve this problem, we need to:

  1. This problem can be solved using dynamic programming.
  2. The key insight is to move both robots simultaneously, row by row.
  3. For each row, we need to consider all possible positions of both robots.
  4. We can use a 3D DP array dp[row][col1][col2] to represent the maximum cherries that can be collected when robot 1 is at (row, col1) and robot 2 is at (row, col2).
  5. For each state, we need to consider 9 possible transitions (3 possible moves for each robot).
  6. We need to be careful about the case where both robots are in the same cell, as only one robot can collect cherries from that cell.
ProblemSolutionCode
101 Logo
onenoughtone