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

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


ในปัญหานี้ เราได้รับสี่ค่า x1, y1, x2, y2 ซึ่งแสดงถึงสองจุด (x1, y1) และ (x2, y2) งานของเราคือค้นหาการเคลื่อนไหวเดี่ยวในเมทริกซ์ เราต้องหาทิศทางที่เราจะเคลื่อนที่จากจุดหนึ่ง (x1, y1) ไปยัง (x2, y2) ได้ ทิศทางที่จำเป็นในการเป็นโสดสามารถมีจำนวนการเคลื่อนไหวเท่าใดก็ได้และเราจำเป็นต้องกลับทิศทางในรูปแบบ - "ซ้าย" , "ขวา", "ขึ้น", "ลง" มิฉะนั้นให้คืนค่า -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