Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm di chuyển đơn trong ma trận trong C++

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