Môn Tin họcQuản lý học tập Tin học

Bắt lỗi thuật toán dò nhiệt độ theo giờ

Lớp 11Lập trìnhpythonGiải quyết vấn đề với máy tínhVận dụng cao

Thang điểm 10 · 6 test case chấm tự động · 3 tiêu chí chấm

Dãy nhiệt độ đo được trong n giờ liên tiếp đã được sắp xếp tăng dần. Cần viết chương trình tìm chỉ số (đếm từ 0) của giờ có nhiệt độ đúng bằng giá trị K cho trước, dùng thuật toán tìm kiếm nhị phân. Nếu không có giờ nào đạt đúng nhiệt độ K thì in ra -1.

Dưới đây là đoạn chương trình một bạn học sinh đã viết nhưng bị lặp vô hạn với một số bộ dữ liệu. Em hãy tìm chỗ sai và sửa lại cho đúng, sau đó hoàn thiện chương trình đọc dữ liệu vào và in kết quả ra màn hình.

  • def BinarySearch(A, K):
  •     left = 0
  •     right = len(A) - 1
  •     while left <= right:
  •         mid = (left + right) // 2
  •         if A[mid] == K:
  •             return mid
  •         elif A[mid] < K:
  •             left = mid
  •         else:
  •             right = mid - 1
  •     return -1

Định dạng vào: dòng 1 là số nguyên n (số giờ đo); dòng 2 gồm n số nguyên tăng dần cách nhau bởi khoảng trắng (nhiệt độ theo từng giờ); dòng 3 là số nguyên K cần tìm.

Định dạng ra: in ra một số nguyên duy nhất là chỉ số (đếm từ 0) của giờ có nhiệt độ bằng K, hoặc -1 nếu không có.

InputOutputGiải thích
10
18 20 21 23 25 26 28 29 31 33
26
5Nhiệt độ 26 ở vị trí chỉ số 5 (giờ thứ 6)
10
18 20 21 23 25 26 28 29 31 33
100
-1Không có giờ nào đạt 100 độ
#tìm kiếm nhị phân#off-by-one#sửa lỗi#while#vòng lặp#category:tu_duy_phan_bien#difficulty:analyzing

Giáo viên giao bài này cho lớp, học sinh nộp bài trực tuyến và được chấm tự động.

Giáo viên đăng nhập để giao bài