在 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 : LeftCase 1: x1 = x2 & y2 > y1 -> Direction : RightCase 1: y1 = y2 & x1 > x2 -> Direction : UpCase 1: y1 = y2 & x2 > x1 -> Direction : Down
程序来说明我们的解决方案的工作,
示例
#include输出结果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<<"运动方向是 "; findSingleMovement(x1, y1, x2, y2); return 0; }
运动方向是 Down