Sửa lỗi lệch chỉ số trong chương trình tra mã sách của thư viện
Thang điểm 10 · 5 test case chấm tự động · 3 tiêu chí chấm
Bạn Lan viết chương trình LinearSearch để tra mã sách trong danh sách của thư viện và đồng thời đếm số phép so sánh (biến count) đã thực hiện, nhằm đối chiếu với công thức T(n) = n + 1 đã học ở Bài 24. Tuy nhiên chương trình của Lan có lỗi lệch chỉ số (off-by-one) nên trong một số trường hợp trả về kết quả sai. Đoạn code gốc (có lỗi) như sau:
def LinearSearch(A, K):count = 0for i in range(1, len(A)):count += 1if A[i] == K:return i, countreturn -1, count
Em hãy tìm ra lỗi (gợi ý: chương trình đã bỏ sót việc kiểm tra phần tử đầu tiên của danh sách), sửa lại cho đúng, rồi viết chương trình hoàn chỉnh đọc dữ liệu từ bàn phím và in kết quả.
Định dạng vào: Dòng 1 là số nguyên n (số lượng mã sách); dòng 2 gồm n số nguyên là các mã sách, cách nhau bởi khoảng trắng; dòng 3 là số nguyên K (mã sách cần tìm).
Định dạng ra: In ra một dòng gồm hai số nguyên cách nhau bởi khoảng trắng: chỉ số tìm được (hoặc -1 nếu không tìm thấy) và số phép so sánh count đã thực hiện.
| Input | Output | Giải thích |
|---|---|---|
| 5 10 20 30 40 50 10 | 0 1 | Mã sách 10 ở vị trí 0 (đầu danh sách), chỉ cần 1 phép so sánh |
| 5 10 20 30 40 50 99 | -1 5 | Không tìm thấy, phải so sánh hết 5 phần tử |
| 6 3 5 7 9 11 13 9 | 3 4 | Mã sách 9 ở vị trí 3, cần 4 phép so sánh |
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