Computer >> Máy Tính >  >> Lập trình >> C ++

Vị trí ô cuối cùng trong ma trận trong C ++

Giả sử chúng ta có một tập hợp các lệnh là một chuỗi, chuỗi sẽ có bốn chữ cái khác nhau cho bốn hướng. U cho lên, D cho xuống, L cho trái và R cho phải. Chúng tôi cũng có vị trí ô ban đầu (x, y). Tìm vị trí ô cuối cùng của đối tượng trong ma trận sau khi thực hiện theo các lệnh cho trước. Chúng ta sẽ giả sử rằng vị trí ô cuối cùng có trong ma trận. Giả sử chuỗi lệnh giống như “DDLRULL”, vị trí ban đầu là (3, 4). Vị trí cuối cùng là (1, 5).

Cách tiếp cận rất đơn giản, đếm số chuyển động lên, xuống, trái và phải, sau đó tìm vị trí cuối cùng (x ’, y’) bằng công thức -

(x’, y’) = (x + count_right – count_left,y + (count_down – count_up))


Ví dụ

#include<iostream>
using namespace std;
void getFinalPoint(string command, int x, int y) {
   int n = command.length();
   int count_up, count_down, count_left, count_right;
   int x_final, y_final;
   count_up = count_down = count_left = count_right = 0;
   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 << "Final Position: " << "(" << x_final << ", " << y_final << ")";
}
int main() {
   string command = "DDLRULL";
   int x = 3, y = 4;
   getFinalPoint(command, x, y);
}

Đầu ra

Final Position: (1, 5)