Java练习 SDUT-2444_正方形
正方形
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
给出四个点,判断这四个点能否构成一个正方形。
Input
输入的第一行包含一个整数T(T≤30)表示数据组数,每组数据只有一行,包括8个整数x1, y1, x2, y2,x3,y3,x4,y4(数据均在-1000,1000 之间)以逆时针顺序给出四个点的坐标。
Output
每组数据输出一行,如果是正方形,则输出: YES, 否则,输出:NO。
Sample Input
2
0 0 1 0 1 1 0 1
-1 0 0 -2 1 0 2 0
Sample Output
YES
NO
题解:根据正方形的判定公式,对角线相等且垂直,来判断是不是正方形。
import java.util.*;
public class Main {
public static void main(String[] agrs)
{
Scanner cin = new Scanner(System.in);
point a,b,c,d;
int t;
t = cin.nextInt();
while(t-->0)
{
a = new point();
b = new point();
c = new point();
d = new point();
a.x = cin.nextInt();
a.y = cin.nextInt();
b.x = cin.nextInt();
b.y = cin.nextInt();
c.x = cin.nextInt();
c.y = cin.nextInt();
d.x = cin.nextInt();
d.y = cin.nextInt();
if(judge(a,b,c,d)==1)
System.out.println("YES");
else
System.out.println("NO");
}
cin.close();
}
static int judge(point a,point b,point c,point d)
{
int x,y;
x = (a.x-c.x) * (a.x-c.x) + (a.y-c.y) * (a.y-c.y);
y = (b.x-d.x) * (b.x-d.x) + (b.y-d.y) * (b.y-d.y);
if(x==y&&((a.x-c.x) * (b.x-d.x)==-((a.y-c.y) * (b.y-d.y))))
return 1;
return 0;
}
}
class point
{
int x,y;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现