📜  在矩阵中查找单个运动

📅  最后修改于: 2022-05-13 01:57:23.565000             🧑  作者: Mango

在矩阵中查找单个运动

给定四个整数x1, y1 和 x2, y2代表无限二维矩阵中的两个位置,任务是找出是否可以在一次移动中从 (x1, y1) 移动到 (x2, y2),或者左、右、上或下。请注意,移动将重复直到到达目的地。如果不可能达到 (x2, y2) 输出-1
例子:

方法:检查坐标是否在同一行或同一列中,只有它可能到达最终目的地。然后根据目的地的方向打印移动。
下面是上述方法的实现:

C++
#include 
using namespace std;
 
// Function that checks whether it is
// possible to move from
// (x1, y1) to (x2, y2)
void Robot_Grid(int x1, int y1, int x2, int y2)
{
    // Both locations are
    // in the same row
    if (x1 == x2) {
 
        // Destination is
        // at the right
        if (y1 < y2) {
            cout << "Right";
        }
        // Destination is
        // at the left
        else {
            cout << "Left";
        }
    }
 
    // Both locations are
    // in the same column
    else if (y1 == y2) {
 
        // Destination is below
        // the current row
        if (x1 < x2) {
            cout << "Down";
        }
 
        // Destination is above
        // the current row
        else {
            cout << "Up";
        }
    }
 
    // Impossible to get
    // to the destination
    else {
        cout << "-1";
    }
}
 
// Driver code
int main()
{
    int x1, x2, y1, y2;
    x1 = 0;
    y1 = 0;
    x2 = 0;
    y2 = 1;
 
    Robot_Grid(x1, y1, x2, y2);
    return 0;
}


Java
// Java implementation of the given above approach
 
public class GFG{
 
    // Function that checks whether it is
    // possible to move from
    // (x1, y1) to (x2, y2)
    static void Robot_Grid(int x1, int y1, int x2, int y2)
    {
        // Both locations are
        // in the same row
        if (x1 == x2) {
     
            // Destination is
            // at the right
            if (y1 < y2) {
                System.out.print("Right");
            }
            // Destination is
            // at the left
            else {
                System.out.print("Left");
            }
        }
     
        // Both locations are
        // in the same column
        else if (y1 == y2) {
     
            // Destination is below
            // the current row
            if (x1 < x2) {
                System.out.print("Down");
            }
     
            // Destination is above
            // the current row
            else {
                System.out.println("Up");
            }
        }
     
        // Impossible to get
        // to the destination
        else {
            System.out.print("-1");
        }
    }
     
    // Driver code
     public static void main(String []args)
    {
        int x1, x2, y1, y2;
        x1 = 0;
        y1 = 0;
        x2 = 0;
        y2 = 1;
     
        Robot_Grid(x1, y1, x2, y2);
}
 
// This code is contributed by Ryuga
}


Python3
# Function that checks whether it is
# possible to move from
# (x1, y1) to (x2, y2)
 
def Robot_Grid(x1, y1, x2, y2):
     
    # Both locations are in the same row
    if (x1 == x2):
         
        # Destination is at the right
        if (y1 < y2):
            print("Right")
 
        # Destination is at the left
        else:
            print("Left")
         
    # Both locations are in the same column
    elif (y1 == y2):
         
        # Destination is below the current row
        if (x1 < x2):
            print("Down")
 
        # Destination is above the current row
        else:
            print("Up")
 
    # Impossible to get to the destination
    else:
        print("-1")
 
# Driver code
if __name__ == '__main__':
    x1 = 0
    y1 = 0
    x2 = 0
    y2 = 1
 
    Robot_Grid(x1, y1, x2, y2)
 
# This code is contributed by
# Sanjit_Prasad


C#
// C# implementation of the given above approach
using System;
 
class GFG{
 
    // Function that checks whether it is
    // possible to move from
    // (x1, y1) to (x2, y2)
    static void Robot_Grid(int x1, int y1,
                           int x2, int y2)
    {
        // Both locations are
        // in the same row
        if (x1 == x2)
        {
     
            // Destination is
            // at the right
            if (y1 < y2)
            {
                Console.Write("Right");
            }
            // Destination is
            // at the left
            else
            {
                Console.Write("Left");
            }
        }
     
        // Both locations are
        // in the same column
        else if (y1 == y2)
        {
     
            // Destination is below
            // the current row
            if (x1 < x2)
            {
                Console.Write("Down");
            }
     
            // Destination is above
            // the current row
            else
            {
                Console.WriteLine("Up");
            }
        }
     
        // Impossible to get
        // to the destination
        else
        {
            Console.WriteLine("-1");
        }
    }
     
    // Driver code
    public static void Main()
    {
        int x1, x2, y1, y2;
        x1 = 0;
        y1 = 0;
        x2 = 0;
        y2 = 1;
     
        Robot_Grid(x1, y1, x2, y2);
    }
}
 
// This code is contributed by
// Mukul Singh


PHP


Javascript


输出:
Right