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.

Author: buitrunghieu

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

There are no comments at the moment.