Câu hỏi:
17/06/2026 115
Thiế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?
Thiế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?
Trả lời:
Giải bởi Vietjack
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)
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 1:
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.
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 2:
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.
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.
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.
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 5:
Công việc sau đây, nếu có sẽ thuộc nhóm công việc nào? Nhập một giá trị số nào đó, ví dụ K, cần tìm trong danh sách các mặt hàng có doanh số xấp xỉ K (hơn kém nhau không quá hằng số C=1).
Công việc sau đây, nếu có sẽ thuộc nhóm công việc nào? Nhập một giá trị số nào đó, ví dụ K, cần tìm trong danh sách các mặt hàng có doanh số xấp xỉ K (hơn kém nhau không quá hằng số C=1).
Câu 6:
Các mô đun của chương trình trên có quan hệ với nhau như thế nào?
Các mô đun của chương trình trên có quan hệ với nhau như thế nào?
Câu 7:
Em hãy giúp công ty du lịch thiết lập tour du lịch tối ưu cho khách hàng nếu biết trước các đánh giá của khách hàng đó.
Em hãy giúp công ty du lịch thiết lập tour du lịch tối ưu cho khách hàng nếu biết trước các đánh giá của khách hàng đó.
Câu 8:
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.
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 9:
Nếu công việc bổ sung 3 có thêm yêu cầu in ra số lượng mặt hàng đã bán trong ngày thì cần thêm hay sửa lệnh nào của chương trình BC2().
Nếu công việc bổ sung 3 có thêm yêu cầu in ra số lượng mặt hàng đã bán trong ngày thì cần thêm hay sửa lệnh nào của chương trình BC2().
Câu 10:
với chương trình đã có trong Hoạt động 1, em sẽ làm gì nếu có các yêu cầu bổ sung như sau:
1. Yêu cầu thay đổi thông tin trong báo cáo: Ghi hai mặt hàng có doanh số cao nhất và bốn mặt hàng có doanh số thấp nhất.
2. Cập nhật, bổ sung các mặt hàng mới và doanh số trong ngày.
3. Yêu cầu làm thêm một báo cáo trong đó ghi doanh số bán trung bình trong ngày và danh sách các mặt hàng có doanh số lớn hơn doanh số trung bình này, kết quả đưa ra tệp Data2.out.
Em có nhận xét gì về công việc thực hiện các công việc bổ sung này?
với chương trình đã có trong Hoạt động 1, em sẽ làm gì nếu có các yêu cầu bổ sung như sau:
1. Yêu cầu thay đổi thông tin trong báo cáo: Ghi hai mặt hàng có doanh số cao nhất và bốn mặt hàng có doanh số thấp nhất.
2. Cập nhật, bổ sung các mặt hàng mới và doanh số trong ngày.
3. Yêu cầu làm thêm một báo cáo trong đó ghi doanh số bán trung bình trong ngày và danh sách các mặt hàng có doanh số lớn hơn doanh số trung bình này, kết quả đưa ra tệp Data2.out.
Em có nhận xét gì về công việc thực hiện các công việc bổ sung này?
