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

201

Với giải Vận dụng 2 trang 24 Chuyên đề Tin học 11 Kết nối tri thức chi tiết trong Bài 4: Tháp Hà Nội giúp học sinh dễ dàng xem và so sánh lời giải, từ đó biết cách làm bài tập Chuyên đề Tin học 11. Mời các bạn đón xem:

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

Vận dụng 2 trang 24 Chuyên đề Tin học 11: 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.

Lời giải:

Để giải bài toán Tháp Hà Nội và lưu các bước chuyển vào một danh sách, ta có thể sử dụng thuật toán đệ quy. Trong mỗi lần đệ quy, ta sẽ chuyển n-1 đĩa từ cọc ban đầu sang cọc trung gian, sau đó chuyển đĩa lớn nhất từ cọc ban đầu sang cọc đích và cuối cùng chuyển n-1 đĩa từ cọc trung gian sang cọc đích.

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

Ví dụ, để chuyển 3 đĩa từ cọc A sang cọc C lấy cọc B làm trung gian, ta có thể gọi hàm Hanoi(3, 'A', 'C', 'B') và kết quả trả về sẽ là danh sách các bước chuyển [(1, 'A', 'C'), (2, 'A', 'B'), (1, 'C', 'B'), (3, 'A', 'C'), (1, 'B', 'A'), (2, 'B', 'C'), (1, 'A', 'C')].

Đánh giá

0

0 đánh giá