Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Xác định hướng từ chuỗi L/R trong C++

Cho chuỗi chỉ chứa 'L' (quay trái) và 'R' (quay phải). Khởi đầu hướng Bắc (N). Tìm hướng cuối cùng.

Ví dụ

"RRLRLLR" → Output: E

Giải thích: N → RR → S → LR → N → LL → N → R → E.

Thuật toán

  • Đếm: 'R' = +1, 'L' = -1.
  • Tổng modulo 4:
    • Dương: 0→N, 1→E, 2→S, 3→W
    • Âm: 0→N, -1→W, -2→S, -3→E

Code C++

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

string getDirection(string s) {
    int cnt = 0;
    for (char c : s) cnt += (c == 'R') ? 1 : -1;
    
    cnt %= 4;
    if (cnt < 0) cnt += 4; // chuẩn về [0,3]
    
    const char* dirs = "NESW"; // 0:N, 1:E, 2:S, 3:W
    return string(1, dirs[cnt]);
}

int main() {
    cout << getDirection("RRLRLLR"); // E
    return 0;
}

Kết quả

E

Lưu ý: Code gốc có bug kiểm tra s[0] == '\n' không cần thiết. Phiên bản trên đơn giản, đúng.