在 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
广告