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

C++의 행렬에서 단일 움직임 찾기

<시간/>

이 문제에서는 두 점(x1, y1)과 (x2, y2)를 나타내는 4개의 값 x1, y1, x2, y2가 제공됩니다. 우리의 임무는 매트릭스에서 단일 움직임을 찾는 것입니다. 한 점 (x1, y1)에서 (x2, y2)로 이동할 수 있는 방향을 찾아야 합니다. 단일 방향에 필요한 방향으로 여러 번 이동할 수 있으며 "left" , "right", "up", "down" 형식으로 방향을 반환해야 합니다. 그렇지 않으면 "불가능"을 나타내는 -1을 반환합니다.

문제를 이해하기 위해 예를 들어보겠습니다.

입력

x1 = 2, y1 = 1, x2 = 5, y1 = 1

출력

Right

솔루션 접근 방식

문제에 대한 간단한 솔루션은 소스에서 목적지에 도달하기 위해 두 좌표 x1:x2 또는 y1:y2 중 하나가 동일해야 한다는 사실을 사용하는 것입니다. 값의 경우 다음과 같습니다. -

Case 1: x1 = x2 & y1 > y2 -> Direction : Left
Case 1: x1 = x2 & y2 > y1 -> Direction : Right
Case 1: y1 = y2 & x1 > x2 -> Direction : Up
Case 1: y1 = y2 & x2 > x1 -> Direction : Down

우리 솔루션의 작동을 설명하는 프로그램

예시

#include <iostream>
using namespace std;
void findSingleMovement(int x1, int y1, int x2, int y2) {
   if (x1 == x2 && y1 < y2)
      cout<<"Right";
   else if (x1 == x2 && y1 > y2)
      cout<<"Left";
   else if (y1 == y2 && x1 < x2)
      cout<<"Down";
   else if (y1 == y2 && x1 > x2)
      cout<<"Up";
   else
      cout<<"Not Possible";
}
int main() {
   int x1, x2, y1, y2;
   x1 = 2; y1 = 1;
   x2 = 5; y2 = 1;
   cout<<"The direction of movement is ";
   findSingleMovement(x1, y1, x2, y2);
   return 0;
}

출력

The direction of movement is Down