Gỡ lỗi: Tra cứu vị trí mực nước sông tại trạm quan trắc
Thang điểm 10 · 5 test case chấm tự động · 3 tiêu chí chấm
Trạm quan trắc thủy văn đo mực nước sông (đơn vị: cm) mỗi ngày trong tháng, lưu thành một danh sách đã sắp xếp tăng dần. Một bạn học sinh viết chương trình dùng thuật toán tìm kiếm nhị phân để kiểm tra một mực nước có xuất hiện trong danh sách không, nếu có thì in ra vị trí (đánh số bắt đầu từ 1), nếu không thì in Khong tim thay. Tuy nhiên khi chạy thử, có trường hợp vị trí in ra bị sai lệch.
Đoạn code của bạn ấy như sau:
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 + 1
else:
right = mid - 1
return -1
Phần chương trình chính đọc n số thực (mực nước, đã tăng dần), rồi đọc q giá trị cần kiểm tra, gọi hàm trên và in trực tiếp giá trị trả về của hàm làm vị trí (không cộng thêm gì cả) khi tìm thấy.
Yêu cầu: Viết lại chương trình hoàn chỉnh, sửa đúng lỗi để vị trí in ra được đánh số bắt đầu từ 1 (ví dụ phần tử đầu tiên trong danh sách phải được coi là vị trí 1, không phải 0).
Định dạng vào: Dòng 1 là số nguyên n; n dòng tiếp theo mỗi dòng một số thực mực nước (đã tăng dần); dòng tiếp theo là số nguyên q; q dòng tiếp theo mỗi dòng một số thực cần kiểm tra.
Định dạng ra: Với mỗi giá trị cần kiểm tra, in một dòng: nếu tìm thấy in Vi tri X (X là vị trí tính từ 1), nếu không in Khong tim thay.
| Input | Output |
|---|---|
| 5 10.5 12.0 15.5 18.0 20.5 3 15.5 10.5 13.0 | Vi tri 3 Vi tri 1 Khong tim thay |
| 3 5.0 6.0 7.0 2 7.0 5.0 | Vi tri 3 Vi tri 1 |
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