zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    解决vue空格换行报错问题
    基本的项目开发流程(前后端开发)
    whl包构建
    Python虚拟环境创建
    页面适配 JS
    SpringBoot整合Ehcache3
    SpringBoot文件分片上传
    SpringBoot访问jar包静态文件
    SpringBoot整合Minio文件存储
    SpringBoot多环境配置文件打包
  • 原文地址:https://www.cnblogs.com/luoxiaoyi/p/9883958.html
Copyright © 2011-2022 走看看