1
var cherryPickup = function (grid) {7
const solve = (x1, y1, x2, y2) => {8
if (x1 === N - 1 && y1 === N - 1)9
return grid[x1][y1] !== -1 ? grid[x1][y1] : -Infinity;15
grid[x1][y1] === -1 ||20
let lookup_key = `${x1}:${y1}:${x2}:${y2}`;21
if (cache[lookup_key]) return cache[lookup_key];23
if (x1 === x2 && y1 === y2) cherries = grid[x1][y1];24
else cherries = grid[x1][y1] + grid[x2][y2];29
solve(x1 + 1, y1, x2 + 1, y2),30
solve(x1, y1 + 1, x2, y2 + 1),31
solve(x1 + 1, y1, x2, y2 + 1),32
solve(x1, y1 + 1, x2 + 1, y2)35
cache[lookup_key] = result;39
result = solve(0, 0, 0, 0);40
return result > 0 ? result : 0;