3418. Maximum Amount of Money Robot Can Earn Medium

@problem@discussion
#Array#Dynamic Programming#Matrix



1/**
2 * [3418] Maximum Amount of Money Robot Can Earn
3 *
4 * You are given an m x n grid. A robot starts at the top-left corner of the grid (0, 0) and wants to reach the bottom-right corner (m - 1, n - 1). The robot can move either right or down at any point in time.
5 * The grid contains a value coins[i][j] in each cell:
6 * 
7 * 	If coins[i][j] >= 0, the robot gains that many coins.
8 * 	If coins[i][j] < 0, the robot encounters a robber, and the robber steals the absolute value of coins[i][j] coins.
9 * 
10 * The robot has a special ability to neutralize robbers in at most 2 cells on its path, preventing them from stealing coins in those cells.
11 * Note: The robot's total coins can be negative.
12 * Return the maximum profit the robot can gain on the route.
13 *  
14 * <strong class="example">Example 1:
15 * <div class="example-block">
16 * Input: <span class="example-io">coins = [[0,1,-1],[1,-2,3],[2,-3,4]]</span>
17 * Output: <span class="example-io">8</span>
18 * Explanation:
19 * An optimal path for maximum coins is:
20 * <ol>
21 * 	Start at (0, 0) with 0 coins (total coins = 0).
22 * 	Move to (0, 1), gaining 1 coin (total coins = 0 + 1 = 1).
23 * 	Move to (1, 1), where there's a robber stealing 2 coins. The robot uses one neutralization here, avoiding the robbery (total coins = 1).
24 * 	Move to (1, 2), gaining 3 coins (total coins = 1 + 3 = 4).
25 * 	Move to (2, 2), gaining 4 coins (total coins = 4 + 4 = 8).
26 * </ol>
27 * </div>
28 * <strong class="example">Example 2:
29 * <div class="example-block">
30 * Input: <span class="example-io">coins = [[10,10,10],[10,10,10]]</span>
31 * Output: <span class="example-io">40</span>
32 * Explanation:
33 * An optimal path for maximum coins is:
34 * <ol>
35 * 	Start at (0, 0) with 10 coins (total coins = 10).
36 * 	Move to (0, 1), gaining 10 coins (total coins = 10 + 10 = 20).
37 * 	Move to (0, 2), gaining another 10 coins (total coins = 20 + 10 = 30).
38 * 	Move to (1, 2), gaining the final 10 coins (total coins = 30 + 10 = 40).
39 * </ol>
40 * </div>
41 *  
42 * Constraints:
43 * 
44 * 	m == coins.length
45 * 	n == coins[i].length
46 * 	1 <= m, n <= 500
47 * 	-1000 <= coins[i][j] <= 1000
48 * 
49 */
50pub struct Solution {}
51
52// problem: https://leetcode.com/problems/maximum-amount-of-money-robot-can-earn/
53// discuss: https://leetcode.com/problems/maximum-amount-of-money-robot-can-earn/discuss/?currentPage=1&orderBy=most_votes&query=
54
55// submission codes start here
56
57impl Solution {
58    pub fn maximum_amount(coins: Vec<Vec<i32>>) -> i32 {
59        0
60    }
61}
62
63// submission codes end
64
65#[cfg(test)]
66mod tests {
67    use super::*;
68
69    #[test]
70    fn test_3418() {
71    }
72}
73


Back
© 2025 bowen.ge All Rights Reserved.