从两个给定的顶点中找出一个正方形的剩余顶点
给定一个正方形的任意两个顶点 (X 1 、Y 1 ) 和 (X 2 、Y 2 ) 的坐标,任务是找出另外两个顶点的坐标。如果用这两个顶点不能形成正方形,打印 -1 。
示例:
输入: X 1 = 1,Y 1 = 2,X 2 = 3,Y 2 = 4 输出: (1,4)、(3,2) 解释:
从上图来看,正方形的另外两个顶点是(1,4)和(3,2)。
输入: X 1 = -5,Y 1 = 5,X 2 = 5,Y 2 = -5 输出: (-5,-5),(5,5)
进场:进场的依据是正方形所有边的长度相等。如果不能获得所有边的长度相等的顶点,则打印-1”。按照以下步骤解决问题:
- 给定的两个顶点可以是正方形边的顶点,也可以是对角线的顶点。
- 如果给定两个顶点的 x 坐标相等,那么其他两个顶点的坐标将为:
(X1+Y2–Y1、Y 1 )和(X2+Y2–Y1、Y 2 )
- 如果给定两个顶点的 y 坐标相等,那么另外两个顶点的坐标将为:
(X 1 ,Y1+X2–X1)和(X 2 ,Y2+X2–X1)
- 否则,给定的坐标是正方形的对角线。因此,另外两个顶点的坐标将是:
(X 1 ,Y 2 )和(X 2 ,Y 1
下面是上述方法的实现:
C++
// C++ program for the above approach
#include <cstdlib>
#include <iostream>
using namespace std;
// Function to find the remaining
// vertices of a square
void findVertices(int x1, int y1,
int x2, int y2)
{
// Check if the x-coordinates
// are equal
if (x1 == x2) {
cout << (x1 + y2 - y1)
<< ", " << y1 << endl;
cout << (x2 + y2 - y1)
<< ", " << y2;
}
// Check if the y-coordinates
// are equal
else if (y1 == y2) {
cout << x1 << ", "
<< (y1 + x2 - x1)
<< endl;
cout << x2 << ", "
<< (y2 + x2 - x1);
}
// If the the given coordinates
// forms a diagonal of the square
else if (abs(x2 - x1)
== abs(y2 - y1)) {
cout << x1 << ", " << y2
<< endl;
cout << x2 << ", " << y1;
}
// Otherwise
else
// Square does not exist
cout << "-1";
}
// Driver Code
int main()
{
// Given two vertices
int x1 = 1, y1 = 2;
int x2 = 3, y2 = 4;
findVertices(x1, y1, x2, y2);
return 0;
}
Java 语言(一种计算机语言,尤用于创建网站)
// Java program for the above approach
import java.util.*;
class GFG{
// Function to find the remaining
// vertices of a square
static void findVertices(int x1, int y1,
int x2, int y2)
{
// Check if the x-coordinates
// are equal
if (x1 == x2)
{
System.out.print((x1 + y2 - y1) +
", " + y1 + "\n");
System.out.print((x2 + y2 - y1) +
", " + y2);
}
// Check if the y-coordinates
// are equal
else if (y1 == y2)
{
System.out.print(x1 + ", " +
(y1 + x2 - x1) + "\n");
System.out.print(x2 + ", " +
(y2 + x2 - x1));
}
// If the the given coordinates
// forms a diagonal of the square
else if (Math.abs(x2 - x1) ==
Math.abs(y2 - y1))
{
System.out.print(x1 + ", " + y2 + "\n");
System.out.print(x2 + ", " + y1);
}
// Otherwise
else
// Square does not exist
System.out.print("-1");
}
// Driver Code
public static void main(String[] args)
{
// Given two vertices
int x1 = 1, y1 = 2;
int x2 = 3, y2 = 4;
findVertices(x1, y1, x2, y2);
}
}
// This code is contributed by Amit Katiyar
Python 3
# Python3 program for the above approach
# Function to find the remaining
# vertices of a square
def findVertices(x1, y1, x2, y2):
# Check if the x-coordinates
# are equal
if (x1 == x2):
print((x1 + y2 - y1), ",", y1)
print((x2 + y2 - y1), ",", y2)
# Check if the y-coordinates
# are equal
elif (y1 == y2):
print(x1, ",", (y1 + x2 - x1))
print(x2, ",", (y2 + x2 - x1))
# If the the given coordinates
# forms a diagonal of the square
elif (abs(x2 - x1) == abs(y2 - y1)):
print(x1, ",", y2)
print(x2, ",", y1)
# Otherwise
else:
# Square does not exist
print("-1")
# Driver Code
if __name__ == '__main__':
# Given two vertices
x1 = 1
y1 = 2
x2 = 3
y2 = 4
findVertices(x1, y1, x2, y2)
# This code is contributed by mohit kumar 29
C
// C# program for the above approach
using System;
class GFG{
// Function to find the remaining
// vertices of a square
static void findVertices(int x1, int y1,
int x2, int y2)
{
// Check if the x-coordinates
// are equal
if (x1 == x2)
{
Console.Write((x1 + y2 - y1) +
", " + y1 + "\n");
Console.Write((x2 + y2 - y1) +
", " + y2);
}
// Check if the y-coordinates
// are equal
else if (y1 == y2)
{
Console.Write(x1 + ", " +
(y1 + x2 - x1) + "\n");
Console.Write(x2 + ", " +
(y2 + x2 - x1));
}
// If the the given coordinates
// forms a diagonal of the square
else if (Math.Abs(x2 - x1) ==
Math.Abs(y2 - y1))
{
Console.Write(x1 + ", " + y2 + "\n");
Console.Write(x2 + ", " + y1);
}
// Otherwise
else
// Square does not exist
Console.Write("-1");
}
// Driver Code
public static void Main(String[] args)
{
// Given two vertices
int x1 = 1, y1 = 2;
int x2 = 3, y2 = 4;
findVertices(x1, y1, x2, y2);
}
}
// This code is contributed by Rajput-Ji
java 描述语言
<script>
// JavaScript program for the above approach
// Function to find the remaining
// vertices of a square
function findVertices(x1, y1, x2, y2)
{
// Check if the x-coordinates
// are equal
if (x1 == x2) {
document.write((x1 + y2 - y1)
+ ", " + y1 + "<br>");
document.write((x2 + y2 - y1)
+ ", " + y2);
}
// Check if the y-coordinates
// are equal
else if (y1 == y2) {
document.write(x1 + ", "
+ (y1 + x2 - x1)
+ "<br>");
document.write(x2 + ", "
+ (y2 + x2 - x1));
}
// If the the given coordinates
// forms a diagonal of the square
else if (Math.abs(x2 - x1)
=== Math.abs(y2 - y1)) {
document.write(x1 + ", " + y2
+ "<br>");
document.write(x2 + ", " + y1);
}
// Otherwise
else
// Square does not exist
document.write("-1");
}
// Driver Code
// Given two vertices
let x1 = 1, y1 = 2;
let x2 = 3, y2 = 4;
findVertices(x1, y1, x2, y2);
// This code is contributed by Surbhi Tyagi.
</script>
Output
1, 4
3, 2
时间复杂度:O(1) T5辅助空间:** O(1)
版权属于:月萌API www.moonapi.com,转载请注明出处