在矩阵中查找单个运动
给定四个整数x1, y1 和 x2, y2代表无限二维矩阵中的两个位置,任务是找出是否可以在一次移动中从 (x1, y1) 移动到 (x2, y2),或者左、右、上或下。请注意,移动将重复直到到达目的地。如果不可能达到 (x2, y2) 输出-1 。
例子:
Input: x1 = 0, y1 = 0, x2 = 1, y2 = 0
Output: Down
Destination is just below the starting point.
Input: x1 = 0, y1 = 0, x2 = 1, y2 = 1
Output: -1
It is impossible to reach (1, 1) from (0, 0) in a single move.
方法:检查坐标是否在同一行或同一列中,只有它可能到达最终目的地。然后根据目的地的方向打印移动。
下面是上述方法的实现:
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