Câu hỏi:
20/04/2023 649Thiết lập chương trình cho công việc thường làm vào cuối giờ bán hàng: Cho trước số K (một doanh số giả định), cần tìm ra mặt hàng có doanh số nhỏ hơn K nhưng gần với K nhất. Bài toán này có thể sử dụng thuật toán tìm kiếm nào để giải?
Sách mới 2k7: Bộ 20 đề minh họa Toán, Lí, Hóa, Văn, Sử, Địa…. form chuẩn 2025 của Bộ giáo dục (chỉ từ 49k/cuốn).
Quảng cáo
Trả lời:
Chương trình sử dụng thuật toán tìm kiếm nhị phân để tìm mặt hàng có doanh số nhỏ hơn K nhưng gần với K nhất trong danh sách mặt hàng đã được sắp xếp theo thứ tự tăng dần của doanh số.
def find_nearest_item(arr, K):
# Sắp xếp danh sách mặt hàng theo thứ tự tăng dần của doanh số
arr.sort()
low, high = 0, len(arr) - 1
result = None
while low <= high:
mid = (low + high) // 2 # Tính giá trị trung bình mid của low và high
if arr[mid] < K:
# Nếu giá trị doanh số của mặt hàng ở vị trí mid nhỏ hơn K
# Đặt low = mid + 1 để tìm phần tử lớn hơn K
low = mid + 1
elif arr[mid] > K:
# Nếu giá trị doanh số của mặt hàng ở vị trí mid lớn hơn K
# Đặt high = mid - 1 để tìm phần tử nhỏ hơn K
high = mid – 1
else:
# Nếu giá trị doanh số của mặt hàng ở vị trí mid bằng K
# Trả về mid làm kết quả
result = mid
break
# Cập nhật giá trị gần K nhất
if result is None or abs(arr[mid] - K) < abs(arr[result] - K):
result = mid
return arr[result]
# Example usage
arr = [10, 20, 30, 40, 50, 60, 70, 80, 90]
K = 45
nearest_item = find_nearest_item(arr, K)
print("Mặt hàng có doanh số nhỏ hơn K nhưng gần với K nhất là:", nearest_item)
CÂU HỎI HOT CÙNG CHỦ ĐỀ
Câu 2:
Em sẽ thiết kế chương trình như thế nào? Trao đổi với bạn về cách thiết kế chương trình sao cho hợp lí nhất.
Câu 3:
Thực hiện các bước thiết kế giải bài toán trên theo phương pháp làm mịn dần, trao đổi và thảo luận để biết được cách thiết kế chương trình theo mô đun.
Câu 4:
Các mô đun của chương trình trên có quan hệ với nhau như thế nào?
Câu 5:
Viết thêm một chương trình cho công việc bổ sung 4 như sau: Cần in ra danh sách 1⁄3 số mặt hàng có doanh số thấp nhất trong ngày.
Câu 6:
Phân loại các công việc bổ sung trên vào ba loại sau:
- Công việc mới hoàn toàn.
- Công việc nâng cấp một mô đun cũ.
- Công việc không liên quan đến thuật toán và lập trình.
Bộ 4 đề thi giữa học kì 2 Tin 11 Kết nối tri thức có đáp án (Đề 1)
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 17 có đáp án
Bộ 4 đề thi giữa học kì 2 Tin 11 Kết nối tri thức có đáp án (Đề 2)
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 19 có đáp án
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 18 có đáp án
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 21 có đáp án
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 20 có đáp án
Bộ 4 đề thi giữa học kì 2 Tin 11 Kết nối tri thức có đáp án (Đề 4)
Hãy Đăng nhập hoặc Tạo tài khoản để gửi bình luận