Đường Đi Ngắn Nhất (Quy Hoạch Động)

Minh hoạ phương pháp Top-Down: Đệ Quy (Recursion) + Ghi Nhớ (Memoization)

Độ phức tạp Thời gian: O(M × N) Độ phức tạp Không gian: O(M × N)

Lưới Chi Phí (Grid)

Số bước: 0

Chú giải (Legend)

Chưa xét
Đang gọi hàm
Cache Hit (Đã lưu)
Đã tính DP xong
Đường đi tối ưu
Pseudocode (Recursion + Memoization)

function minPath(r, c) {
// Kiểm tra vi phạm giới hạn lưới
if (r >= ROWS || c >= COLS) return Infinity;
// Base Case: Đã đến ô đích
if (r === ROWS - 1 && c === COLS - 1)
return grid[r][c];
// Memoization: Nếu ô này đã được tính, lấy kết quả luôn
if (memo[r][c] !== null)
return memo[r][c];
// Đệ quy: Thử đi sang PHẢI và đi XUỐNG
let rightCost = minPath(r, c + 1);
let downCost = minPath(r + 1, c);
// Lưu kết quả nhỏ nhất cộng với chi phí tại ô hiện tại
memo[r][c] = grid[r][c] + Math.min(rightCost, downCost);
return memo[r][c];
}
Nhật ký Call Stack SẴN SÀNG
Hệ thống đang chờ lệnh...