在 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

更新時間:2021-3-16

95 次瀏覽

開啟你的職業生涯

完成課程即可獲得認證

開始吧
廣告
© . All rights reserved.