Giải Chuyên đề Tin học 11 Bài 16: Thực hành thiết kế thuật toán theo kĩ thuật quay lui
Lời giải:
Để tìm ra các bước đi tiếp theo từ một vị trí trong mê cung khi áp dụng kĩ thuật duyệt quay lui, chúng ta cần kiểm tra các ô xung quanh ô hiện tại xem có thể đi được không. Nếu ô đó chưa được đi qua và là ô đích hoặc có thể đi đến ô đích từ ô đó thì chúng ta chọn ô đó làm ô tiếp theo và tiếp tục tìm đường đi từ ô đó. Nếu không có ô nào thỏa mãn điều kiện trên, chúng ta quay lại ô trước đó và tiếp tục kiểm tra các ô xung quanh ô đó. Quá trình này được lặp lại cho đến khi tìm được đường đi hoặc đã duyệt qua tất cả các ô mà không tìm được đường đi.
Luyện tập
Lời giải:
Để điểm bắt đầu tại m//2 và n//2, em chỉ cần thay đổi giá trị của biến x và y khi gọi hàm solveMaze. Thay vì truyền 0, 0 vào hàm solveMaze, em có thể truyền m//2, n//2:
Lời giải:
- Em cần sửa hàm writemaze in dữ liệu đầu ra và hàm soveMaze đặt giá trị tại các ô là 2 nếu ở đó là đường đi
- Hai hàm cần sửa như sau:
Vận dụng
Lời giải:
Để in ra tất cả các đường đi trong mê cung, bạn có thể sử dụng một hàm đệ quy để tìm và in ra tất cả các đường đi hợp lệ.
Lời giải:
Để giải bài toán này, có thể sử dụng thuật toán quay lui (backtracking) để tìm tất cả các cách xếp Hậu một cách hợp lệ trên bàn cờ.
Em có thể tham khảo lời giải sau:
Lời giải:
- Bài toán yêu cầu tìm một hành trình của quân mã đi qua tất cả các ô trên bàn cờ mà không đi qua bất kỳ ô nào hai lần.
- Ta sẽ thử tất cả các bước di chuyển hợp lệ của quân mã từ một ô đang xét và đi tiếp cho đến khi quân mã đã đi qua tất cả các ô trên bàn cờ.
Tham khảo bài làm sau:
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 11: Bài toán tìm kiếm theo kĩ thuật duyệt
Bài 12: Thực hành kĩ thuật duyệt cho bài toán tìm kiếm
Bài 13: Kĩ thuật duyệt quay lui