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

Tìm chuyển động đơn lẻ trong ma trận trong C ++

Trong bài toán này, chúng ta có bốn giá trị x1, y1, x2, y2 biểu thị hai điểm (x1, y1) và (x2, y2). Nhiệm vụ của chúng ta là tìm chuyển động đơn lẻ trong Ma trận. Chúng ta cần tìm hướng mà chúng ta có thể di chuyển từ một điểm (x1, y1) đến (x2, y2). Có thể có bất kỳ số chuyển động nào theo hướng cần thiết để duy nhất và chúng ta cần quay lại hướng ở dạng - “trái”, “phải”, “lên”, “xuống”. Nếu không, trả về -1, biểu thị “không thể”.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

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

Đầu ra

Right

Phương pháp tiếp cận giải pháp

Một giải pháp đơn giản cho vấn đề là sử dụng thực tế là để đến đích từ nguồn, một trong hai tọa độ x1:x2 hoặc y1:y2 cần phải giống nhau. Đối với các giá trị, đây là các trường hợp -

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

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

Ví dụ

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

Đầu ra

The direction of movement is Down