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
Đóng
Điểm danh hàng ngày
  • Hôm nay +3
  • Ngày 2 +3
  • Ngày 3 +3
  • Ngày 4 +3
  • Ngày 5 +3
  • Ngày 6 +3
  • Ngày 7 +5
Bạn đã điểm danh Hôm nay và nhận 3 điểm!
Nhắn tin Zalo VNDOC để nhận tư vấn mua gói Thành viên hoặc tải tài liệu Hotline hỗ trợ: 0936 120 169

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 8

Lớp: Lớp 11
Môn: Tin Học
Dạng tài liệu: Chuyên đề
Bộ sách: Kết nối tri thức với cuộc sống
Loại File: PDF
Phân loại: Tài liệu Tính phí

Giải Chuyên đề Tin học 11 bài 8: Thực hành thiết thuật toán tìm kiếm theo kĩ thuật chia để trị là tài liệu hữu ích giúp bạn đọc có thể trau dồi nội dung kiến thức, học tập tốt hơn môn Tin học 11 nhé.

Khởi động trang 37 Chuyên đề Tin 11 Kết nối

Cho một dãy số A bất kì. Để xác định một số C cho trước xuất hiện trong dãy A bao nhiều lần thì làm thế nào?

Lời giải:

Bài tập này có thể dễ dàng giải bằng phương pháp tìm kiếm tuần tự đã biết. Gọi count là số lần xuất hiện của C trong dãy. Thực hiện tìm kiếm tuần tự với C, mỗi lần tìm thấy C, tăng biến count lên 1.

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 8

Luyện tập trang 39 Chuyên đề Tin 11 Kết nối

Chỉnh sửa nâng cấp chương trình của nhiệm vụ thực hành để đưa ra kết quả là vùng các phần tử có giá trị bằng C của dãy gốc, tức là yêu cầu đưa ra chỉ số đầu, chỉ số cuối và số lượng phần tử của vùng có giá trị bằng C

Ví dụ nếu A = [0, 1, 2, 2, 2, 2, 4, 5, 5, 6], C = 2, thì kết quả trả lại là 2, 5, 4.

Lời giải:

- Chương trình trả về ba giá trị start, end và count, tương ứng với chỉ số đầu tiên, chỉ số cuối cùng và số lượng phần tử của vùng có giá trị bằng C trong dãy A.

- Trong trường hợp không tìm thấy C trong dãy A, chương trình trả về -1, -1, 0.

- Nếu giá trị tại vị trí mid bằng C, ta sử dụng hai biến start và end để tìm ra chỉ số đầu tiên và cuối cùng của vùng có giá trị bằng C. Sau đó, ta trả về giá trị start + 1, end - 1 và end - start - 1.

- Nếu giá trị tại vị trí mid nhỏ hơn C, ta tiếp tục tìm kiếm phần tử có giá trị bằng C ở nửa bên phải của dãy A.

- Nếu giá trị tại vị trí mid lớn hơn C, ta tiếp tục tìm kiếm phần tử có giá trị bằng C ở nửa bên trái của dãy A.

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 8

Ví dụ chạy thử chương trình:

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 8

Thu được kết quả:

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 8

Vận dụng 1 trang 39 Chuyên đề Tin 11 Kết nối

Cho một dãy số bất kì (chưa được sắp xếp) và một số K, hãy tìm số lần xuất hiện của K trong dãy số trên. Yêu cầu sử dụng phương pháp chia để trị.

Lời giải:

Để tìm số lần xuất hiện của K trong một dãy số chưa được sắp xếp bằng phương pháp chia để trị, ta có thể sử dụng đệ quy và chia dãy số ban đầu thành hai phần. Tiếp tục chia đến khi dãy số chỉ còn một phần tử hoặc không có phần tử nào.

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 8

Với đầu vào là một dãy số A và một số K, hàm countNum sẽ trả về số lần xuất hiện của K trong dãy số A. Ví dụ:

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 8

Vận dụng 2 trang 39 Chuyên đề Tin 11 Kết nối

Cho một dãy số nguyên được sắp xếp theo thứ tự tăng dần, hãy tìm một vị trí thứ i trong dãy sao cho phần tử thứ i có giá trị bằng i.

Lời giải:

Để tìm vị trí thứ i trong dãy số sao cho phần tử thứ i có giá trị bằng i, ta có thể sử dụng phương pháp chia để trị như sau:

1. Tìm giá trị trung bình của left và right: mid = (left + right) // 2

2. Nếu giá trị tại vị trí mid bằng mid, tức là A[mid] == mid, thì trả về mid

3. Nếu giá trị tại vị trí mid lớn hơn mid, tức là A[mid] > mid, thì tiếp tục tìm vị trí thích hợp trong đoạn từ left đến mid-1

4. Nếu giá trị tại vị trí mid nhỏ hơn mid, tức là A[mid] < mid, thì tiếp tục tìm vị trí thích hợp trong đoạn từ mid+1 đến right

5. Nếu không tìm được vị trí thích hợp nào, tức là left > right, thì trả về -1

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 8

Ví dụ:

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 8

Kết quả sẽ là "Vị trí thích hợp là: 3", tức là phần tử thứ 3 trong dãy A có giá trị bằng 3.

Vận dụng 3 trang 39 Chuyên đề Tin 11 Kết nối

Cho trước dãy số A đã sắp xếp theo thứ tự tăng dần, cho trước hằng số C. Cần thiết lập hai hàm sau bằng kĩ thuật chia để trị:

– Hàm firstInd(A, left, right, C) sẽ tìm chỉ số của phần tử đầu tiên của dãy A có giá

trị bằng C. Nếu không sẽ trả về -1.

– Hàm lastInd(A, left, right, C) sẽ tìm chỉ số của phần tử cuối cùng của dãy A có giá trị bằng C. Nếu không thấy sẽ trả về – 1.

Từ hai hàm đã thiết kế trên, đưa ra một cách giải khác cho bài toán trong nhiệm vụ 1. Lời giải này có độ phức tạp O(logn).

Lời giải:

Để thiết lập hai hàm firstInd và lastInd bằng kĩ thuật chia để trị, ta có thể áp dụng phương pháp tương tự như khi tìm kiếm số lần xuất hiện của một phần tử trong dãy số bằng kĩ thuật chia để trị. Cụ thể, ta sẽ chia dãy số thành hai nửa và tìm kiếm đệ quy trên từng nửa đó.

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 8

Ví dụ:

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 8

Kết quả trả về:

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 8

- Ta có thể sử dụng hàm firstInd và lastInd đã thiết kế để giải quyết bài toán tìm số lần xuất hiện của một số trong một dãy số.

Giả sử ta cần tìm số lần xuất hiện của số C trong dãy A đã sắp xếp tăng dần. Đầu tiên, ta sử dụng hàm firstInd để tìm chỉ số của phần tử đầu tiên có giá trị bằng C, sau đó sử dụng hàm lastInd để tìm chỉ số của phần tử cuối cùng có giá trị bằng C. Nếu cả hai hàm đều trả về giá trị khác -1, số lần xuất hiện của C trong dãy A sẽ là hiệu của chỉ số của phần tử cuối cùng và phần tử đầu tiên cộng thêm 1.

Vì mỗi lần gọi hàm firstInd và lastInd đều có độ phức tạp O(logn), nên độ phức tạp của giải pháp này sẽ là O(logn).

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 8

Chọn file muốn tải về:
Đóng Chỉ thành viên VnDoc PRO/PROPLUS tải được nội dung này!
Đóng
79.000 / tháng
Đặc quyền các gói Thành viên
PRO
Phổ biến nhất
PRO+
Tải tài liệu Cao cấp 1 Lớp
30 lượt tải tài liệu
Xem nội dung bài viết
Trải nghiệm Không quảng cáo
Làm bài trắc nghiệm không giới hạn
Mua cả năm Tiết kiệm tới 48%

Có thể bạn quan tâm

Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
Sắp xếp theo
🖼️

Tin học 11 Kết nối tri thức

Xem thêm
🖼️

Gợi ý cho bạn

Xem thêm