网格盈亏的最大累积路径
Maximum P&L Path Through a Grid
开始编码某情景分析工具用两个压力维度刻画组合的当日盈亏:行表示某一因子(比如平行利率冲击)的强度逐级加深,列表示另一因子(比如信用利差冲击)的强度逐级加深。grid[r][c] 是当系统进入联合压力状态 (r, c) 时实现的整数美元盈亏。一条「压力轨迹」从最温和的状态 (0, 0) 出发,必须单调加深——每一步要么把行方向的压力再加一档(向下走),要么把列方向再加一档(向右走)——直到走到最坏角点 (R-1, C-1)。这条轨迹的累积盈亏等于路径上每一格 grid 的求和(含两端)。我们要的是最优轨迹:让累积盈亏最大的那条。
请实现 solution(grid: list[list[int]]) -> int。返回从 (0, 0) 到 (R-1, C-1)、只走右/下的所有单调路径中累积和的最大值。注意格子可以是负的(路径有时不得不穿过亏损区),并且路径上的格子不能跳过——选定路径后每一格都计入。
示例 1——2×2:solution([[1, 2], [3, 4]]) 返回 8。两条合法路径:(0,0)→(0,1)→(1,1) 累积 1+2+4 = 7,以及 (0,0)→(1,0)→(1,1) 累积 1+3+4 = 8,第二条胜出。
示例 2——含负值的 3×3:solution([[1, -2, 3], [4, 5, -6], [7, 8, 9]]) 返回 29。一共有 C(4,2)=6 条单调路径,最优路径沿最左列向下、再沿最底行向右:(0,0)→(1,0)→(2,0)→(2,1)→(2,2),累积 1+4+7+8+9 = 29。路径 1 → -2 → 5 → 8 → 9 = 21 因为踩到 -2 而吃亏;路径 1 → 4 → 5 → -6 → 9 = 13 因为穿过 -6 而更差。DP 递推会在每个格子自动挑选更优的来路,从而绕开这两个负值。
示例 3——单格:solution([[7]]) 返回 7。当 R=C=1 时路径就是起点本身(也等于终点),结果就是这一格的值。同样的退化情形:1×C 单行(路径被迫走完每一列,结果等于这行之和)和 R×1 单列(结果等于这列之和)。
标准的 2-D DP 在题面规模下完全够用:R*C ≤ 4·10⁴ 个格子,每格 O(1) 处理,总共约 4 万次基本运算,远低于 2 秒预算。直接写显式的 2-D 表(更清晰)或者用 O(C) 的滚动数组(更省内存)都可以通过。
约束条件
- 1 ≤ R, C,其中 R = len(grid)、C = len(grid[0])
- R ≤ 200 且 C ≤ 200,且 R*C ≤ 4*10^4
- 所有行长度都为 C(矩形网格)
- -10^4 ≤ grid[i][j] ≤ 10^4(格子允许负值)
- 允许的移动:向右 (r, c) → (r, c+1) 或向下 (r, c) → (r+1, c)。不允许斜向、不允许向上/向左。
- 路径从 (0, 0) 出发,到 (R-1, C-1) 结束;两个端点都计入总和。
样例
Case 1 · single cell
输入: [[[7]]]
期望: 7
R=C=1,路径就是起点(也等于终点),结果是 grid[0][0]=7。
Case 2 · 2x2 prefer-down path
输入: [[[1,2],[3,4]]]
期望: 8
两条单调路径:上→右走 1+2+4=7;下→右走 1+3+4=8。下走那条更优,最大和为 8。
Case 3 · 3x3 with negatives — DP avoids loss cells
输入: [[[1,-2,3],[4,5,-6],[7,8,9]]]
期望: 29
6 条单调路径中,沿左列下、底行右的路径 1→4→7→8→9=29 最优。DP 在每格选择更优来路,自动避开 -2 与 -6。
最近提交
还没有提交记录。
编码区
实现 solution(...)。本地运行当前支持 Python 可见样例;服务端提交会运行可见样例和隐藏测试。
默认展示公开样例。点击「运行样例」后会在这里显示实际输出;点击「提交评测」会进入隐藏测试。
Case 1 · single cell
输入: [[[7]]]
期望: 7
R=C=1,路径就是起点(也等于终点),结果是 grid[0][0]=7。
Case 2 · 2x2 prefer-down path
输入: [[[1,2],[3,4]]]
期望: 8
两条单调路径:上→右走 1+2+4=7;下→右走 1+3+4=8。下走那条更优,最大和为 8。
Case 3 · 3x3 with negatives — DP avoids loss cells
输入: [[[1,-2,3],[4,5,-6],[7,8,9]]]
期望: 29
6 条单调路径中,沿左列下、底行右的路径 1→4→7→8→9=29 最优。DP 在每格选择更优来路,自动避开 -2 与 -6。