Trong bài toán này, cho bốn giá trị x1, y1, x2, y2 biểu diễn hai điểm (x1, y1) và (x2, y2). Nhiệm vụ là tìm di chuyển đơn trong ma trận. Tìm hướng di chuyển từ (x1, y1) đến (x2, y2). Có thể di chuyển nhiều bước nhưng hướng phải đơn nhất, trả về "left", "right", "up", "down". Nếu không thể trả về -1.
Ví dụ minh họa:
Đầu vào
x1 = 2, y1 = 1, x2 = 5, y2 = 1
Đầu ra
Right
Phương pháp giải
Để đến đích từ nguồn, một trong hai cặp tọa độ x1:x2 hoặc y1:y2 phải giống nhau. Các trường hợp:
Case 1: x1 = x2 & y1 > y2 -> Direction: Left Case 2: x1 = x2 & y2 > y1 -> Direction: Right Case 3: y1 = y2 & x1 > x2 -> Direction: Up Case 4: y1 = y2 & x2 > x1 -> Direction: Down
Chương trình minh họa:
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;
}Kết quả
The direction of movement is Down