Bắt lỗi thuật toán dò nhiệt độ theo giờ
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 = 0right = len(A) - 1while left <= right:mid = (left + right) // 2if A[mid] == K:return midelif A[mid] < K:left = midelse:right = mid - 1return -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ó.
| Input | Output | Giải thích |
|---|---|---|
| 10 18 20 21 23 25 26 28 29 31 33 26 | 5 | Nhiệt độ 26 ở vị trí chỉ số 5 (giờ thứ 6) |
| 10 18 20 21 23 25 26 28 29 31 33 100 | -1 | Không có giờ nào đạt 100 độ |
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àiBài tập khác lớp 11
- Ước lượng thời gian chấm điểm bài thi trắc nghiệm · Lập trình
- Đo đường chéo sân tập thể thao · Lập trình
- Chồng sách trên bàn học · Lập trình
- Thống kê quãng đường chạy bộ của CLB · Lập trình
- Đếm số cách đóng gói đều sản phẩm · Lập trình
- Theo dõi số bước chân của nhóm tập luyện · Lập trình