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

Tìm vị trí cuối cùng trong ma trận theo chuỗi lệnh C++

Cho chuỗi lệnh chứa các ký tự U (lên), D (xuống), L (trái), R (phải) và vị trí khởi tạo (x, y). Tìm vị trí cuối cùng sau khi thực hiện tất cả lệnh. Giả định vị trí cuối luôn nằm trong ma trận.

Ví dụ: lệnh "DDLRULL", vị trí đầu (3, 4) → vị trí cuối (1, 5).

Giải thuật

Đếm số lần xuất hiện của mỗi hướng, sau đó áp dụng công thức: x' = x + count_right - count_left y' = y + count_down - count_up

Ví dụ minh họa

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

void getFinalPoint(string command, int x, int y) {
    int n = command.length();
    int count_up = 0, count_down = 0, count_left = 0, count_right = 0;
    int x_final, y_final;
    
    for (int i = 0; i < n; i++) {
        if (command[i] == 'U') count_up++;
        else if (command[i] == 'D') count_down++;
        else if (command[i] == 'L') count_left++;
        else if (command[i] == 'R') count_right++;
    }
    
    x_final = x + (count_right - count_left);
    y_final = y + (count_down - count_up);
    cout << "Vi tri cuoi cung: (" << x_final << ", " << y_final << ")";
}

int main() {
    string command = "DDLRULL";
    int x = 3, y = 4;
    getFinalPoint(command, x, y);
}

Kết quả

Vi tri cuoi cung: (1, 5)