Hướng dẫn giải của Bài 6 — Đường đi chi phí nhỏ nhất trong lưới (DP6)


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Tác giả: kieutt

DP6 — Đường đi chi phí nhỏ nhất trong lưới (chỉ phải/xuống)

  • Trạng thái (tối ưu bộ nhớ): ~dp[j]~ = chi phí nhỏ nhất đến ô hiện tại ở cột ~j~ khi quét theo từng hàng.
  • Cập nhật khi đọc ô ~(i, j)~ có chi phí ~c~:
    • Nếu ~(i, j) == (1, 1)~ ⇒ ~dp[j] = c~
    • Else if ~i == 1~ ⇒ ~dp[j] = dp[j-1] + c~ (chỉ từ trái)
    • Else if ~j == 1~ ⇒ ~dp[j] = dp[j] + c~ (chỉ từ trên)
    • Else ⇒ ~dp[j] = min(dp[j], dp[j-1]) + c~ (min từ trên / trái)
  • Đáp án: ~dp[m]~.
  • Bộ nhớ: ~O(m)~.

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.