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

Vị trí robot sau các chuyển động cho trước trong C++


Trong bài toán này, cho một robot di chuyển theo 4 hướng nhưng chỉ một bước mỗi lần. Các hướng: lên ('U'), xuống ('D'), trái ('L'), phải ('R'). Cho chuỗi chứa ký tự đầu của các hướng. Nhiệm vụ in vị trí cuối cùng của robot, vị trí ban đầu là (0,0).

Ví dụ minh họa:

Đầu vào - 'LDRRUL'

Kết quả - (0, 0)

Giải thích -

L (trái): (0,0) -> (-1,0) 
D (xuống): (-1,0) -> (-1,-1) 
R (phải): (-1,-1) -> (0,-1) 
R (phải): (0,-1) -> (1,-1) 
U (lên): (1,-1) -> (1,0) 
L (trái): (1,0) -> (0,0)

Để giải bài toán, đếm tổng bước trên trục x và y. Trục x: tăng cho phải, giảm cho trái. Trục y: tăng cho lên, giảm cho xuống.

Chương trình minh họa

#include <iostream> 
#include <string.h> 
using namespace std; 

void robotMoved(string move) { 
    int xAxis = 0, yAxis = 0; 
    int l = move.size(); 
    for (int i = 0; i < l; i++) { 
        if (move[i] == 'U') 
            yAxis++; 
        else if (move[i] == 'D') 
            yAxis--; 
        else if (move[i] == 'L') 
            xAxis--; 
        else if (move[i] == 'R') 
            xAxis++; 
    } 
    cout << "Vị trí cuối cùng của robot là: (" << xAxis << ", " << yAxis << ")" << endl; 
} 

int main() { 
    string move = "URLLDDRRUDUDDRU"; 
    robotMoved(move); 
    return 0; 
}

Kết quả

Vị trí cuối cùng của robot là: (32744, -274873553)

Lưu ý: Kết quả ví dụ gốc có giá trị rất lớn do biến chưa được khởi tạo (xAxis, yAxis). Code đã được sửa bằng cách khởi tạo = 0.