Editorial for C Bài 3.C2: Tìm người chạy trước
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Lời giải chi tiết
Ý tưởng: Kiểm tra từng hiệu của 3 số \(b, c, d\) với \(a\). Ta sẽ lấy số dương nhỏ nhất. Truy vết: Mỗi khi phát hiện hiệu mới nhỏ hơn hiệu hiện tại mà thỏa mãn đề bài, ta sử dụng một biến lưu lại người đó.
Các bước giải:
- Bước 1: Khai báo và nhập vào 4 số \(a, b, c, d\).
- Bước 2: Khởi tạo 2 biến \(pos = 0\) và \(dist = -1\) thể hiện người gần nhất trước mặt của An, và khoảng cách của người gần nhất trước mặt An (-1 là chưa có ai vượt An).
- Bước 3: Kiểm tra xem \(a\) có nhỏ hơn lần lượt \(b, c, d\) hay không. Nếu có thì tiếp tục kiểm tra điều kiện \(dist\): Nếu \(dist = -1\) thì chỉ có người đang xét hiện tại vượt An, do đó gán \(dist = c-a\); Nếu \(dist > 0\) và \(dist <\) khoảng cách từ An đến người đang xét đến, thì gán lại \(dist\) mới và \(pos\) mới là người đang xét; trường hợp còn lại thì ta bỏ qua để xét đến người tiếp theo.
- Bước 4: In ra \(pos\) là người gần nhất vượt qua An.
Đăng ký khóa học: https://www.facebook.com/clblaptrinhfullhouse
SĐT liên hệ: 0372229686
Youtube: CLB Lập Trình Full House
Fullhouse dev đồng hành trên từng dòng code
Comments