The third coordinate is a missing fact
Picture
Return to the right/down board. This time you may remove at most K blocked cells along your route. Two journeys can reach the same square with different budgets left. That square now represents several different remaining questions: one for each available budget.
Predict
At a square just before an unavoidable wall, one history has budget 1 and another has budget 0. Would caching only by (row, col) produce a valid answer for both?
Reveal the reasoning
No. The first can continue and the second cannot. Add budget_left. “3D” means three coordinates in the chosen state; it does not require imagining a physical cube.
Go deeper: say when the resource is consumed
Define paths(r,c,k) as the number of right/down routes from (r,c) with at most k wall removals available before paying for the current square. The fixed rectangular board uses 0 for open and 1 for blocked. A blocked start or destination also consumes one removal.
from functools import cache
def budget_routes(board, budget):
if not board or not board[0] or budget < 0:
return 0
rows, cols = len(board), len(board[0])
@cache
def paths(r, c, k):
if r >= rows or c >= cols:
return 0
remaining = k - board[r][c]
if remaining < 0:
return 0
if (r, c) == (rows - 1, cols - 1):
return 1
return paths(r + 1, c, remaining) + paths(r, c + 1, remaining)
return paths(0, 0, budget)
assert budget_routes([[0, 1], [1, 0]], 0) == 0
assert budget_routes([[0, 1], [1, 0]], 1) == 2
assert budget_routes([[1]], 0) == 0
assert budget_routes([[1]], 1) == 1
Both routes on the 2×2 board cross exactly one wall. Unused budget does not create extra copies of a route; each sequence is counted once with its actual spending.
Possible states number O(RC(K+1)), each with two outgoing choices. That bounds arithmetic operations and cache storage; recursion depth remains O(R+C). Some states are unreachable. Since a route visits R+C-1 squares, larger budgets can be capped at that number without changing this answer.
Analogy limit: a budget layer is a different situation at the same location. It is not another direction the traveler can physically move.
Change one rule
You must remove exactly K walls. What changes at the destination?
Check the variation
After paying for the destination, return one only if remaining == 0; otherwise return zero. “At most” and “exactly” differ in their base condition. Do not cap an exact budget using the at-most argument.
Connect
Two-agent DP derives a third coordinate from a different missing fact. Compression can shrink storage while preserving the logical coordinates. Recognition asks you to invent these coordinates from changed rules.