Trang chủ Lớp 11 Tin học Chuyên đề Tin Học 11 KNTT Bài 13. Kĩ thuật duyệt quay lui

Chuyên đề Tin Học 11 KNTT Bài 13. Kĩ thuật duyệt quay lui

Chuyên đề Tin Học 11 KNTT Bài 13. Kĩ thuật duyệt quay lui

  • 204 lượt thi

  • 15 câu hỏi

  • 0 phút

Danh sách câu hỏi

Câu 2:

17/06/2026

Đọc, trao đổi và thảo luận về ý tưởng thuật toán quay lui của bài toán tìm đường đi trong mê cung.

Xem đáp án

        Ý tưởng của thuật toán duyệt quay lui là luôn tìm cách đi tiếp theo. Xuất phát từ vị trí gốc, thuật toán sẽ gọi hàm tìm bước đi tiếp theo. Nếu thực hiện được một bước đi thì gọi lại hàm để tìm bước đi tiếp theo. Nếu không tìm thấy đường đi thì cần "quay lui" về vị trí trước đó để tìm đường đi khác. Thuật toán sẽ sử dụng kĩ thuật đệ quy khi gọi hàm cho bước đi tiếp theo.

Đọc, trao đổi và thảo luận về ý tưởng thuật toán quay lui của bài toán tìm đường đi trong mê cung. (ảnh 1)

Câu 3:

17/06/2026

Khi đã thực hiện hết các bước lặp tại dòng 2 ở trên thì hàm có dừng không?

Xem đáp án

Khi đã thực hiện hết các bước lặp tại dòng 2 ở trên thì hàm không dừng. Nếu đã đến đích thì thông báo tìm thấy thấy nghiệm tại dòng thứ 7, nếu chưa tìm thấy thì gọi đệ quy lại hàm gốc để đi tiếp tại dòng 10. Nếu không thể đi tiếp thì quay lui tại dòng 11, xóa dấu vết và quay lại vòng lặp 2.


Câu 4:

17/06/2026

Lệnh gọi hàm chính của chương trình trên là gì?

Xem đáp án

Lệnh gọi hàm chính của chương trình trên là dòng số 2, lặp trên tập hợp các khả năng có thể đi tiếp


Câu 6:

17/06/2026

Quan sát, thực hiện và thảo luận các bước thiết kế mô hình tổng quát của kĩ thuật duyệt quay lui.

Xem đáp án

Mô hình thuật toán quay lui tổng quát quy định việc tìm trên các dãy số nguyên (x1,x2,...,xk sử dụng lệnh gọi đệ quy để mô tả bước đi tiếp theo với k + 1, nếu không tìm được bước đi tiếp theo thì quay lui để tìm hướng đi khác.

Mô hình tổng quát duyệt quay lui sử dụng đệ quy như sau:

Quan sát, thực hiện và thảo luận các bước thiết kế mô hình tổng quát của kĩ thuật duyệt quay lui. (ảnh 1)

Câu 7:

17/06/2026

Trạng thái "quay lui" của thuật toán trên nằm ở đâu?

Xem đáp án

Trong quá trình thực hiện thuật toán, khi tìm được một giải pháp không hợp lệ hoặc không có giải pháp, chương trình sẽ quay lui ngược trở về trạng thái trước đó và tiếp tục thử các giá trị khác cho các biến trạng thái. Khi quay lui, chương trình sẽ trả lại các giá trị đã được duyệt trước đó và trở về trạng thái trước đó để thử các giá trị khác. Quá trình quay lui này sẽ tiếp tục cho đến khi tìm được giải pháp hoặc đã thử tất cả các giá trị khả dĩ cho các biến trạng thái.


Câu 8:

17/06/2026

Có cách nào đếm được tất cả các nghiệm từ thuật toán trên được không? Nếu có thì làm cách nào?

Xem đáp án

Có thể đếm tất cả các nghiệm từ thuật toán duyệt quay lui dùng đệ quy bằng cách sử dụng biến đếm và tăng giá trị của biến này mỗi khi tìm được một nghiệm hợp lệ. Khi kết thúc thuật toán, giá trị của biến đếm sẽ là số lượng nghiệm tìm được.


Câu 9:

17/06/2026

Cùng thực hiện, trao đổi, thảo luận thiết kế chương trình sinh tất cả các dãy nhị phân độ dài n bằng kĩ thuật quay lui.

Xem đáp án

Để thiết kế chương trình sinh tất cả các dãy nhị phân độ dài n bằng kĩ thuật quay lui, ta có thể sử dụng đệ quy để thêm lần lượt các số 0 và 1 vào dãy nhị phân.

Bước 1: Viết hàm để sinh dãy nhị phân độ dài n:

Cùng thực hiện, trao đổi, thảo luận thiết kế chương trình sinh tất cả các dãy nhị phân độ  (ảnh 1)

Bước 2: Gọi hàm generate_binary_sequence với độ dài của dãy nhị phân cần sinh:

Cùng thực hiện, trao đổi, thảo luận thiết kế chương trình sinh tất cả các dãy nhị phân độ  (ảnh 2)

Thu được kết quả:

Cùng thực hiện, trao đổi, thảo luận thiết kế chương trình sinh tất cả các dãy nhị phân độ  (ảnh 3)

Câu 10:

17/06/2026

Trong chương trình 1, động tác “quay lui” nằm ở đâu?

Xem đáp án

Trong chương trình 1, động tác “quay lui” nằm ở dòng 7: genBinary (A, k+1)


Câu 11:

17/06/2026

Giải thích ý nghĩa của lệnh A.pop() tại dòng 8 của chương trình 2. Vì sao lệnh này không có trong chương trình 1?

Xem đáp án

- Lệnh A.pop() tại dòng 8 của chương trình 2 nhằm xóa phần tử đã nhập từ bước trước khi quay lui

- Vì ở chương trình 1, dãy A được thiết lập từ trước có đủ n phần tử nên tại bước này chỉ là lệnh gán giá trị và không cần dùng lệnh pop()

- Ở Chương trình 2, dãy A ban đầu là dãy rộng, do đó A được bổ sung dần. Sau khi kết thúc lệnh gọi đệ quy ở dòng 7 cần gọi lệnh pop() ở dòng 8.


Câu 12:

17/06/2026

Sửa các chương trình trên bổ sung thêm chức năng: sau khi in ra tất cả các xâu nhị phân thi thông báo tổng số nghiệm.

Xem đáp án

Biến count được sử dụng để đếm số lượng xâu nhị phân được sinh ra, và được khởi tạo là 0. Khi một xâu nhị phân được in ra, giá trị của count sẽ được tăng lên 1. Cuối cùng, in ra giá trị của biến count để hiển thị tổng số nghiệm.


Câu 13:

17/06/2026

Viết chương trình sinh tất cả các xâu (hoặc dãy) bao gồm n kí tự dạng “R”, “G” và "B".

Xem đáp án

Có thể sử dụng thuật toán quay lui như sau

Viết chương trình sinh tất cả các xâu (hoặc dãy) bao gồm n kí tự dạng “R”, “G” và

Ví dụ, nếu ta chạy đoạn code sau:

Viết chương trình sinh tất cả các xâu (hoặc dãy) bao gồm n kí tự dạng “R”, “G” và

Kết quả sẽ là tất cả các xâu bao gồm 3 kí tự "R", "G" và "B":

Viết chương trình sinh tất cả các xâu (hoặc dãy) bao gồm n kí tự dạng “R”, “G” và

Câu 14:

17/06/2026

Viết chương trình sinh tất cả các số hex (hệ đếm 16) có 3 chỉ số.

Xem đáp án

- Có thể sử dụng một hàm đệ quy, trong đó mỗi lần đệ quy, ta thêm một ký tự hex vào chuỗi kết quả và gọi đệ quy tiếp tục với số chỉ số còn lại.

Dưới đây là một ví dụ về cách thực hiện điều này bằng Python:

Viết chương trình sinh tất cả các số hex (hệ đếm 16) có 3 chỉ số. (ảnh 1)
Ví dụ:
Viết chương trình sinh tất cả các số hex (hệ đếm 16) có 3 chỉ số. (ảnh 2)

Kết quả:

Viết chương trình sinh tất cả các số hex (hệ đếm 16) có 3 chỉ số. (ảnh 3)

Bắt đầu thi ngay