01/10/2018, 17:30
Bài toán sắp xếp tìm người giỏi nhất
các a/c cho em hỏi với ạ
đề bài như sau :
có 4 bạn A,B,C ,D thi đấu với nhau với 4 môn Toán lý hóa sinh .
- ai có điểm muôn toán cao nhất sẽ giành giải nhất .
2.nếu các bạn bằng điểm nhau môn toán sẽ xét điểm môn lý
3.nếu các bạn bằng điểm nhau môn lý sẽ xét điểm môn hóa
- nếu các bạn bằng điểm nhau môn hóa sẽ xét điểm môn sinh
xếp hạng thứ tự 4 bạn này
input là điểm các bạn đó
output là thư tự
nếu có 2 bạn trở lên bằng điểm nhau cả 4 môn thì in ra -1
có bác nào từng giải bài tập kiểu xếp hạng này k ạ có em ý tưởng với
và có để sử dụng thuật toán gì ? em cám ơn
Bài liên quan
Thuật toán là if else
Bài này dùng If else là đơn giản nhất, nhưng có một cách hay hơn.
Trước tiên dùng 4 biến A, B, C, D đại diện cho số điểm tổng của 4 bạn. Tổng ở đây không có nghĩa là cộng tất cả lại mà cộng theo kiểu mã hóa hệ cơ số 11 (do có 11 giá trị từ 0 - 10)
Giới hạn tối đa của tổng này là 14 640 (4 môn đều 10 điểm) nên có thể dùng một biến 2 byte để lưu.
Đối với B, C, D tính toán tương tự.
Sau đó có thể dùng các phép so sánh, sắp xếp với 4 biến này dễ dàng hơn. Nếu hai bạn bằng điểm nhau thì điểm tổng cũng bằng nhau.
nếu mà có khoang 10 học sinh thêm khoảng mấy môn nữa thì if else đên bao giờ``
bác có thể nói rõ công thưc này hơn được k ạ
Ví dụ không phải hệ cơ số 11 mà là hệ 100 đi
Toán * 100^3 + Lý * 100^2 + Hóa * 100 + Sinh
mỗi 1 điểm giờ là 2 chữ số, so sánh dễ rồi nhé
toán 9, lý 8, hóa 10, sinh 9 => 9081009
toán 9, lý 8, hóa 9, sinh 5 => 9080905
Nếu số học sinh tăng lên thì dùng mảng để lưu lại, rồi tiến hành sắp xếp mảng.
Nên có hai mảng, một mảng lưu tên HS (A, B, C, …), một mảng lưu điểm tổng, trong khi sắp xếp điểm số chú ý sắp xếp lại tên luôn.
Nếu tăng số môn thì cứ dựa vào công thức trên thôi. Có quy luật mà.
Công thức này có liên quan đến chuyển cơ số, bạn google để biết thêm thông tin.
Cho mình xin keyword để search gg, thanks
hay quá trước giờ chưa bao giờ nghĩ tới việc chuyển hệ cơ số