Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หาการเคลื่อนที่เดียวในเมทริกซ์ใน C++

ในปัญหานี้ เราได้รับค่าสี่ค่า x1, y1, x2, y2 ซึ่งแทนจุดสองจุด (x1, y1) และ (x2, y2) งานของเราคือหาการเคลื่อนที่เดียวในเมทริกซ์ เราต้องหาทิศทางที่ใช้เคลื่อนที่จากจุดหนึ่ง (x1, y1) ไป (x2, y2) อาจมีการเคลื่อนที่หลายครั้ง แต่อย่างใดอย่างหนึ่งทิศทางต้องเป็นทิศทางเดียว และเราต้องคืนค่าทิศทางในรูปแบบ - "left", "right", "up", "down" มิฉะนั้นคืนค่า -1 แทน "not possible"

มาดูตัวอย่างเพื่อเข้าใจปัญหา

Input

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

Output

Right

วิธีแก้ปัญหา

วิธีแก้ที่ง่ายคือใช้ข้อเท็จจริงว่าเพื่อไปถึงจุดหมายจากต้นทาง ดัชนี x1:x2 หรือ y1:y2 ต้องมีค่าเท่ากัน สำหรับค่าต่างๆ นี่คือกรณีต่างๆ

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

โปรแกรมแสดงการทำงานของวิธีแก้

ตัวอย่าง

#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