Giao diện mới của VnDoc Pro: Dễ sử dụng hơn - chỉ tập trung vào lớp bạn quan tâm. Vui lòng chọn lớp mà bạn quan tâm: Lưu và trải nghiệm

Giải SBT Tin học 11 Cánh diều bài 7

Giải SBT Tin học 11 bài 7: Lập trình giải bài toán tìm kiếm có đáp án chi tiết cho từng câu hỏi chương trình sách mới. Thông qua đây các em học sinh đối chiếu với lời giải của mình, hoàn thành bài tập hiệu quả.

Bài: Lập trình giải bài toán tìm kiếm

Câu Fcs26 trang 55 SBT Tin học 11: Theo em, tại sao em không thể áp dụng thuật toán tìm kiếm nhị phân trên một dãy chưa được sắp xếp theo thứ tự?

Lời giải:

Với một dãy chưa được sắp xếp theo thứ tự, ta không có đủ cơ sở để loại bỏ một nửa dãy số ra khỏi phạm vi tìm kiếm sau khi so sánh phần tử giữa với giá trị x cần tìm.

Câu Fcs27 trang 55 SBT Tin học 11: Em hãy chỉ ra một trường hợp mà thuật toán tìm kiếm tuần tự cho ra kết quả nhanh hơn thuật toán tìm kiếm nhị phân.

Lời giải:

Với dãy a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] và khoá r = 1, thuật toán tìm kiếm tuần tự chỉ mất một lượt so sánh để tìm ra x trong dãy a, còn thuật toán tìm kiếm nhị phân phải mất ba lần chia đôi dãy mới thu hẹp được phạm vi tìm kiếm về phần tử 1 ở vị trí ngoài cùng bên trái của a.

Câu Fcs28 trang 55 SBT Tin học 11: Trong tiết Vật lí, An thực hành đo hiệu điện thế trong đoạn mạch song song. Theo lí thuyết, đáp án đo được phải bằng đúng x. An đã ghi lại kết quả của n lần đo, chính là dãy số a, a, @,,..., 0 - A2, An Kết quả được coi là chính xác nếu sai số tương đối không vượt quá 5%. An cần tính xem đã đo chính xác được bao nhiêu lần để xem thử dụng cụ thực hành của nhà trường còn tốt không? Dữ liệu: Nhập từ thiết bị vào chuẩn:

• Dòng đầu tiên chứa số nguyên dương n và số thực dương x.

• Dòng tiếp theo chứa n số thực dương a, a, a,...., cho có tối đa hai chữ số ở phần thập phân).

Kết quả: Hiển thị ở thiết bị ra chuẩn một số nguyên duy nhất là số lượng kết quả đo chính xác.

Lời giải:

Áp dụng tìm kiếm tuần tự, tuy nhiên điều kiện “bằng” cần phải tính.

Chương trình mẫu:

Câu Fcs29 trang 55 SBT Tin học 11: Xét bài toán: Một hàng dọc gồm n bạn học sinh xếp theo thứ tự từ thấp đến cao, bạn thứ i (0 <i≤n − 1) có chiều cao là h (cm). Em hãy viết chương trình, với độ phức tạp O(nlog,n), sử dụng thuật toán tìm kiếm nhị phân để tính số cách chọn một cặp học sinh trong hàng sao cho chênh lệch chiều cao của hai bạn ấy bằng đúng giá trị d (cm) cho trước.

Dữ liệu: Nhập từ thiết bị vào chuẩn:

• Dòng đầu tiên chứa một dãy số nguyên dương hạ, h,,,h với đảm bảo h<h,,, (0 ≤i≤n- 1).

• Dòng thứ hai chứa một số nguyên dương d.

Kết quả: Hiển thị ở thiết bị ra chuẩn một số nguyên là số lượng cặp chỉ số (i, j) để h − h = d (0<i<j<n-1).

Lời giải:

Với mỗi chỉ số j, tồn tại tối đa một chỉ số i để h[j] – h[i] = d. Điều kiện h[j] - h[i] = d tương đương với h[i] = h[j] – d. Đặt h[j] – d = x, em có thể quy về bài toán tìm kiếm giá trị x trên dãy h. Sử dụng một biến kiểu boolean để ghi nhận kết quả tìm kiếm cho mỗi chỉ số j, em có thể tính tổng số lượng chỉ số j mà tồn tại i thoả mãn h[j] – h[i] = d, cũng chính là số cặp cần tìm.

Câu Fcs30 trang 56 SBT Tin học 11: Bản đồ gene

Các nhà khoa học vừa phát hiện ra bản đồ gene của một loài sinh vật trên Trái Đất có nguồn gốc từ rất lâu về trước (niên đại được xác định dựa trên các dấu vết khảo cổ học). Chuỗi gene di truyền của nó được biểu diễn bởi xâu kí tự S (chỉ gồm các kí tự A..Z). Nhằm đánh giá, nghiên cứu nó, họ muốn xem thử nó có đặc tính T hay không. T cũng được biểu diễn dưới dạng một xâu kí tự (với các kí tự A..Z), tương ứng với một đoạn gene. Người ta cho rằng, loại sinh vật này có tính chất T nói trên nếu chuỗi biểu diễn của T là một chuỗi con của S. Tức là, nếu ta lấy ra các kí tự liên tiếp của S tại vị trí nào đó thì có được T. Em hãy lập trình giải quyết bài toán trên. Dữ liệu: Nhập từ thiết bị vào chuẩn:

• Dòng đầu tiên chứa xâu S.

• Dòng thứ hai chứa xâu T.

Kết quả: Hiển thị ở thiết bị ra chuẩn các số nguyên là những vị trí mà ta tìm thấy được T ở trong S.

Lời giải:

Áp dụng lát cắt danh sách, việc cài đặt khá đơn giản.

S = input ()

T = input ()

for i in range (len (S) - len (T) + 1):

if T == S[i: i+len (T)]:

print (i+1, end = " ")

Mở rộng: Trong thực tế, thuật toán trên chưa đủ hiệu quả, vì việc so sánh hai xâu có độ phức tạp là len(T). Vậy độ phức tạp của thuật toán trên là len(S) x len(T) trong trường hợp xấu nhất. Áp dụng tư tưởng làm mịn dần thuật toán, người ta đã phát minh ra các thuật toán so khớp xâu:

– Hash (thường gặp trong mật mã học – cryptography).

– KMP (tận dụng những kí tự đã được so sánh trước đó để không phải so sánh lại từ đầu).

- Z function.

Em có thể tìm đọc để tăng thêm niềm đam mê với thuật toán.

>>>> Bài tiếp theo: Giải SBT Tin học 11 Cánh diều bài 8

Trên đây là toàn bộ lời giải Giải SBT Tin học lớp 11 bài 7: Lập trình giải bài toán tìm kiếm sách Cánh diều. Các em học sinh tham khảo thêm Trắc nghiệm Toán 11 Kết nối tri thức, Tin học lớp 11 Kết nối tri thức. VnDoc liên tục cập nhật lời giải cũng như đáp án sách mới của SGK cũng như SBT các môn cho các bạn cùng tham khảo.

Chia sẻ, đánh giá bài viết
1
3 Bình luận
Sắp xếp theo
  • Biết Tuốt
    Biết Tuốt

    😍😍😍😍😍😍😍😍

    Thích Phản hồi 19:20 23/08
    • Su kem
      Su kem

      😊😊😊😊😊😊😊

      Thích Phản hồi 19:20 23/08
      • Phước Thịnh
        Phước Thịnh

        😄😄😄😄😄😄😄😄

        Thích Phản hồi 19:20 23/08
        🖼️

        Gợi ý cho bạn

        Xem thêm
        🖼️

        Tin học 11 Cánh diều

        Xem thêm