01/10/2018, 00:51
Tìm phần tử lớn thứ 2, 3 chỉ dùng 1 vòng lặp
Mọi người cho em xin code cũng như giải thuật bài này được không ạ… @@!
Em đang mắc không biết làm như nào… @@
Nhập 1 mảng
Tìm phẩn tử lớn thứ 2 và 3 của mảng đó
Chỉ đc dùng 1 vòng lặp
Bài liên quan
Giờ mình gợi ý cho bạn như thế này. Ví dụ mình có dãy số sau: 3 1 5
Mình tạo thêm ba biến max_1, max_2, max_3 khởi tạo ba biến đó đều = 0
Bước 1: lấy 3 so sánh với max_1 do 3 > max_1(0) nên gán max_1 = 3, do max_1 thay đổi nên cập nhật max_2 và max_3, gán max_2 = max_1 củ (0), max_3 = max_2 củ (0)
Bước 2: lấy 1 so sánh với max_1, 1 < max_1(3), nên tiếp tục lấy 1 so sánh vs max_2, 1 > max_2(0) nên gán max_2 = 1, do max_2 thay đổi nên cập nhật max_3 lại bằng cách gán max_3 = max_2 củ (0)
Bước 3: lấy 5 so sánh với max_1, 5 > max_1(3), nên gán max_1 = 5, do max_1 thay đổi nên cập nhật max_2 bằng cách gán max_2 = max_1 củ (3), do max_2 thay đổi nên cập nhật lại max_3 bằng cách gán max_3 = max_2 củ (1)
Cuối cùng có kết quả là: max_1 = 5, max_2 = 3, max_3 = 1
Với cách này bạn có thể tìm luôn phần tử lớn thứ 4, 5 6 đều được. Chỉ cần hiểu nguyên tắc của nó giống như là chạy đua vậy, khi một người vượt lên dẫn đầu, thì người dẫn đầu trước đó sẽ bị tuột hạng thành 2, người thứ 2 trước đó tuột hạng thành 3…
để code cho gọn, lưu 1 mảng ans[] 4 phần tử từ 0 ->3
đọc đến phần tử x thì gán ans[3]=x rồi call sort ans
kết quả là ans[1] và ans[2]
chú ý trường hợp mảng có ít hơn 3 phần tử