Gọ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
144
30/08/2023
Hoạt động 3 trang 23 Chuyên đề Tin học 11: Gọ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.
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.
Xem thêm lời giải bài tập Chuyên đề học tập Tin học lớp 11 Kết nối tri thức hay, chi tiết khác:
Bài 2: Thiết kế thuật toán đệ quy
Bài 3: Thực hành giải toán theo kĩ thuật đệ quy
Bài 4: Tháp Hà Nội
Bài 5: Thực hành thiết kế thuật toán theo kĩ thuật đệ quy
Bài 6: Ý tưởng và kĩ thuật chia để trị
Bài 7: Thiết kế thuật toán theo kĩ thuật chia để trị