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

Kiểm tra quay lại gốc tọa độ sau chuỗi di chuyển trong C++

Cho chuỗi ký tự chỉ chứa 'N', 'S', 'E', 'W' đại diện cho di chuyển Bắc, Nam, Đông, Tây từ gốc tọa độ (0, 0). Kiểm tra sau khi thực hiện hết chuỗi có quay lại (0, 0) hay không.

Ví dụ

Đầu vào: "EENWWS"

Đầu ra: True

Giải thích: Đông(2) -> Bắc(1) -> Tây(2) -> Nam(1). Tọa độ cuối: (0, 0).

Phương pháp giải

Duyệt chuỗi, cập nhật tọa độ (x, y):

  • E (East): x++
  • W (West): x--
  • N (North): y++
  • S (South): y--
Kết quả: x == 0 && y == 0.

Chương trình C++

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

bool isBackToOrigin(string moves) {
    int x = 0, y = 0;
    for (char c : moves) {
        switch(c) {
            case 'E': x++; break;
            case 'W': x--; break;
            case 'N': y++; break;
            case 'S': y--; break;
        }
    }
    return (x == 0 && y == 0);
}

int main() {
    string moves = "EENWWS";
    cout << "Chuoi: " << moves << " -> " 
         << (isBackToOrigin(moves) ? "Quay lai goc (True)" : "Khong quay lai (False)");
    return 0;
}

Đầu ra

Chuoi: EENWWS -> Quay lai goc (True)

Mở rộng: Nếu cần đếm số bước tối thiểu để quay lại gốc từ vị trí hiện tại: abs(x) + abs(y) (Manhattan distance).