Hướng dẫn giải của [200 đề thầy Đức] Bài 120: Hình phạt


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Hướng dẫn giải

Nam đứng nghiêm, mỗi lần thầy hô 1 (trái) thì Nam bước sang trái 1 mét, hô 2 (phải) thì bước sang phải 1 mét. Sau n lần, tìm khoảng cách của Nam so với vị trí ban đầu.

Cách làm
  1. Dùng biến vitri để lưu vị trí của Nam so với điểm xuất phát. Quy ước: số dương là bên phải, số âm là bên trái.

  2. Mỗi lần đọc một số s: nếu s bằng 1 thì vitri giảm 1, còn lại (s bằng 2) thì vitri tăng 1.

  3. Khoảng cách không phụ thuộc vào chiều đi, nên in giá trị tuyệt đối abs(vitri). Ví dụ 1 1 2 1 cho vitri = -2, in ra 2.

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    // vitri > 0 là bên phải, vitri < 0 là bên trái so với vị trí ban đầu
    int vitri = 0;
    for (int i = 1; i <= n; i++) {
        int s;
        cin >> s;
        if (s == 1) {
            // Thầy hô "trái" thì Nam bước sang trái 1 mét
            vitri = vitri - 1;
        } else {
            // Thầy hô "phải" thì Nam bước sang phải 1 mét
            vitri = vitri + 1;
        }
    }
    // Khoảng cách không phụ thuộc chiều, nên lấy giá trị tuyệt đối
    cout << abs(vitri) << "\n";
    return 0;
}

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.