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 .

  1. 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

  1. 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

Quang Minh viết 19:37 ngày 01/10/2018

Thuật toán là if else

Vuio viết 19:41 ngày 01/10/2018

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)

A = 11^3 * Toán   +   11^2 * Lý   +   11 * Hóa   +   Sinh

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.

Quang Ict viết 19:30 ngày 01/10/2018

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ờ``

Quang Ict viết 19:35 ngày 01/10/2018

A = 11^3 * Toán + 11^2 * Lý + 11 * Hóa + Sinh

bác có thể nói rõ công thưc này hơn được k ạ

phamvandung viết 19:39 ngày 01/10/2018

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

Vuio viết 19:37 ngày 01/10/2018

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.

Tran Huu Tin viết 19:31 ngày 01/10/2018

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ố

Bài liên quan
0