cpp-285Đọc toàn bộ đề miễn phí

Tổng đường đi nhỏ nhất trong lưới

Thay vì đếm đường đi, bài này hỏi đường đi nào tốn ít chi phí nhất. Mỗi ô có một chi phí, và

C++Cơ bản14 phút

Tiến độ của tôi ở bài này

Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.

Đang tải điểm của bạn…

Kiến thức và chủ đề

dynamic-programminggridminimisationentry-ramp

Kiến thức tiên quyết: cpp-basics, arrays.

Nội dung đề bài

Mô tả bài toán

Thay vì đếm đường đi, bài này hỏi đường đi nào tốn ít chi phí nhất. Mỗi ô có một chi phí, và chi phí của cả đường đi là tổng chi phí các ô đã bước qua, kể cả ô xuất phát và ô đích. Bảng quy hoạch động hai chiều vì thế phải cộng thêm chi phí ô hiện tại sau khi chọn ô trước đó.

Yêu cầu

Cho lưới n hàng, m cột, mỗi ô ghi một số nguyên không âm. Đi từ ô góc trên bên trái tới ô góc dưới bên phải, mỗi bước chỉ được sang phải hoặc xuống dưới. Hãy tìm tổng chi phí nhỏ nhất, tính cả ô đầu và ô cuối.

Quy ước nộp bài

Nộp tệp solution.cpp đọc dữ liệu từ stdin và ghi kết quả ra stdout. Chỉ in một số nguyên trên một dòng, không kèm chữ hay dấu cách thừa.

Input

  • Dòng thứ nhất: hai số nguyên n, m (1 <= n, m <= 15).
  • n dòng tiếp theo, mỗi dòng m số nguyên là chi phí các ô (0 <= chi phí <= 1000).

Output

  • Một số nguyên trên một dòng là tổng chi phí nhỏ nhất.

Ràng buộc

  • Chỉ đi sang phải hoặc xuống dưới, không đi chéo.
  • Chi phí ô xuất phát và ô đích đều được tính.
  • Thời gian cho mỗi bộ dữ liệu là 1 giây.

Ví dụ 1

Input

3 3
1 3 1
1 5 1
4 2 1

Output

7

Ví dụ 2

Input

2 2
1 2
3 4

Output

7

Giải thích

Đường đi 1 -> 3 -> 1 -> 1 -> 1 (sang phải, sang phải, xuống, xuống) có tổng 7, nhỏ nhất có thể. In ra:

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.

Nhóm Zalo