Chưa thể dừng ở kết quả có vẻ nhỏ
```python
def minimum_total(names, B, C, D):
if not names:
return None, None
best_name = names[0]
best_score = B[0] + C[0] + D[0]
for i in range(1, len(names)):
score = B[i] + C[i] + D[i]
if score < best_score:
best_name, best_score = names[i], score
return best_name, best_score
```
Kết quả tốt nhất khởi tạo từ hàng đầu, không dùng0 vì 0 có thể không là tổng của mẫu nào. Duyệt phần còn lại, gặp tổng nhỏ hơn thì cập nhật cả tên và tổng. Bảng mẫu trả Mẫu A,23,9; nếu rỗng thì (None,None). Khi nhiều tổng nhỏ nhất bằng nhau, mã giữ hàng gặp trước.
Sắp xếp chọn trên cả bản ghi
```python
def top_three(names, B, C, D):
# Sắp xếp chọn giảm dần trên bản ghi riêng, không đổi bốn dãy gốc.
records = [(names[i], B[i], C[i], D[i], B[i] + C[i] + D[i])
for i in range(len(names))]
for i in range(len(records) - 1):
best = i
for j in range(i + 1, len(records)):
if records[j][4] > records[best][4]:
best = j
records[i], records[best] = records[best], records[i]
return records[:3]
```
Mỗi bản ghi chứa tên, ba điểm và tổng. Sắp xếp chọn giảm dần theo tổng ở vị trí4 của bản ghi rồi lấy ba bản ghi đầu. Vì đổi chỗ cả bản ghi, tên không rời khỏi các điểm gốc; bốn dãy đầu vào giữ nguyên.
Bảng mẫu cho thứ tự F28,2;E27,5;D27,1. Nếu có ít hơn ba hàng, chỉ trả số hàng có thật. Nếu tổng đồng hạng, bài này chưa yêu cầu quy tắc xếp giữa chúng; không kết luận mã luôn giữ thứ tự cũ của các hàng đồng hạng.
Bài luyện
Vì sao không khởi tạo tổng nhỏ nhất bằng 0?
Bài yêu cầu tổng nhỏ nhất.
Nên khởi tạo bằng một tổng có thật khi dữ liệu không rỗng.
Các điểm mẫu đều không âm.
Chương trình vẫn cần số để tính và so.
Lời giải
Nếu đặt best_score=0 trên bảng có các tổng dương, không tổng nào nhỏ hơn 0 nên có thể giữ đáp án sai. Lấy tổng hàng đầu làm mốc rồi duyệt các hàng còn lại.
Bài luyện
Ba mẫu có tổng cao nhất trong bảng là gì, theo thứ tự giảm dần?
Đúng ba mẫu nhưng thứ tự đang tăng.
Đã bỏ E có tổng cao thứ hai.
Các tổng tương ứng28,2;27,5;27,1.
Đây là ba tổng nhỏ hơn.
Lời giải
So các tổng: F28,2 lớn nhất, E27,5 tiếp theo, D27,1 đứng thứ ba. Sắp giảm dần cho thứ tự F,E,D.
Bài luyện
Khi sắp xếp bản ghi, vì sao phải đổi chỗ cả tên và các điểm?
Sắp xếp chỉ đổi thứ tự.
Mã giữ cả ba điểm và tổng riêng.
Bản ghi được tạo riêng, dữ liệu gốc không bị xóa.
Các thông tin liên quan cần đi cùng nhau qua phép đổi chỗ.
Lời giải
Tổng được tính từ ba điểm của một mẫu. Đổi riêng cột tổng hoặc riêng tên có thể ghép sai; đổi cả bản ghi giữ mối liên hệ dữ liệu.
Đang học