Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 행렬의 최종 셀 위치

<시간/>

문자열로 명령 세트가 있다고 가정하면 문자열은 4방향에 대해 4개의 다른 문자를 갖습니다. U는 위, D는 아래, L은 왼쪽, R은 오른쪽입니다. 초기 셀 위치(x, y)도 있습니다. 주어진 명령을 따른 후 행렬에서 객체의 최종 셀 위치를 찾습니다. 행렬에 최종 셀 위치가 있다고 가정합니다. 명령 문자열이 "DDLRULL"과 같다고 가정하고 초기 위치는 (3, 4)입니다. 최종 위치는 (1, 5)입니다.

접근 방식은 간단합니다. 위, 아래, 왼쪽 및 오른쪽 움직임의 수를 세고 공식을 사용하여 최종 위치(x', y')를 찾습니다. -

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


예시

#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);
}

출력

Final Position: (1, 5)