Câu hỏi:
11/05/2023 250Gọi Hanoi(n, i, j, k) là bài toán yêu cầu chuyển n đĩa đang xếp ở cọc i sang cọc j lấy cọc k làm trung gian. Các đĩa được đánh số từ 1 đến n và xếp theo thứ tự từ trên xuống. Các điều kiện của việc chuyển như sau:
1. Các đĩa đánh số từ 1 đến n và có kích thước tăng dần.
2. Mỗi lần chỉ được phép chuyển một đĩa.
3. Không được phép xếp đĩa to lên trên đĩa nhỏ.
Em hãy thiết kế thuật toán đệ quy tổng quát cho bài toán trên. Yêu cầu phải mô tả chi tiết từng bước chuyển.
Sách mới 2k7: Bộ 20 đề minh họa Toán, Lí, Hóa, Văn, Sử, Địa…. form chuẩn 2025 của Bộ giáo dục (chỉ từ 49k/cuốn).
Quảng cáo
Trả lời:
Mô tả chi tiết từng bước chuyển như sau:
1. Khi n = 1:
Di chuyển đĩa từ cọc i sang cọc j.
2. Khi n > 1:
- Bước 1: Chuyển n - 1 đĩa từ cọc i sang cọc k:
Gọi lại thuật toán Hanoi(n-1, i, k, j) để chuyển n - 1 đĩa từ cọc i sang cọc k.
- Bước 2: Chuyển đĩa lớn nhất từ cọc i sang cọc j:
Di chuyển đĩa từ cọc i sang cọc j.
- Bước 3: Chuyển n - 1 đĩa từ cọc k sang cọc j:
Gọi lại thuật toán Hanoi(n-1, k, j, i) để chuyển n - 1 đĩa từ cọc k sang cọc j.
CÂU HỎI HOT CÙNG CHỦ ĐỀ
Câu 1:
Viết sơ đồ chi tiết giải bài toán Tháp Hà Nội cho trường hợp n = 4. Tính H(4).
Câu 2:
Hãy chứng minh công thức bằng quy nạp toán học. Hãy tính H(64) và so sánh với con số các bước đã được đưa ra trong tờ quảng cáo của trò chơi vào năm 1883.
Câu 3:
Đọc, tìm hiểu bài toán Tháp Hà Nội và thực hiện giải trò chơi này với số lượng đĩa nhỏ (1, 2, 3). Em có nhận xét gì về lời giải bài toán với n = 1, 2, 3?
Câu 4:
Tính các giá trị H(2), H(3), H(4), H(5) của bài toán Tháp Hà Nội.
Câu 5:
Viết chương trình giải bài toán Tháp Hà Nội nhưng với tên các cọc là A, B, C.
Câu 6:
Giả sử cần lưu dãy các bước chuyển của bài toán Tháp Hà Nội vào một danh sách để có thể sử dụng lại về sau. Mỗi bước chuyển dạng k: i → j sẽ được lưu trong một bộ ba số (k, i, j). Viết chương trình giải bài toán Tháp Hà Nội tổng quát Hanoi(n, i, j, k) chuyển n đĩa từ cọc i sang cọc j lấy cọc k làm trung gian với yêu cầu lưu tất cả các bước chuyển vào một danh sách (list). Như vậy, hàm Hanoi(n, i, j, k) sẽ trả về một danh sách bao gồm các bộ ba số dạng như đã mô tả ở trên.
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Quản trị cơ sở dữ liệu trên máy tính có đáp án
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 11 có đáp án
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 14 có đáp án
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 16 có đáp án
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Thực hành xác định cấu trúc bảng và các trường khóa có đáp án
15 câu Trắc nghiệm Tin học 11 Cánh diều Làm quen với Microsoft Access có đáp án
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 15 có đáp án
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 12 có đáp án
về câu hỏi!