您的位置:首页 > 汽车 > 时评 > 唐山网站建设公司哪家好_顺德网页制作公司_专业培训心得体会_论坛推广方案

唐山网站建设公司哪家好_顺德网页制作公司_专业培训心得体会_论坛推广方案

2025/1/8 8:11:24 来源:https://blog.csdn.net/TangKenny/article/details/143275509  浏览:    关键词:唐山网站建设公司哪家好_顺德网页制作公司_专业培训心得体会_论坛推广方案
唐山网站建设公司哪家好_顺德网页制作公司_专业培训心得体会_论坛推广方案

题目描述

输入 N 个互不相同的二维整数坐标,求这 N 个坐标可以构成的正方形数量。(内积为零的的两个向量垂直)

输入描述

第一行输入为 NN 代表坐标数量,N 为正整数 N≤100

之后的 N 行输入为坐标 x y 以空格分隔,xy为整数, -10≤x,y≤10

输出描述

输出可以构成的正方形数量

示例1

输入

3
1 3
2 4
3 1

输出

0

说明

3个点不足以构成正方形

示例2

输入

4
0 0
1 2
3 1
2 -1

输出

1

说明

此4点可构成正方形

题解

先求出任意两个点的距离,一共六个距离。

如果这六个距离,没有0并且只有两种距离,那么就是正方形。

源码 Java

import java.util.ArrayList;
import java.util.HashSet;public class Square {static Input input;static  {input = new Input("4\n" +"0 0\n" +"1 2\n" +"3 1\n" +"2 -1");}public static void main(String[] args) {Integer count = Integer.parseInt(input.nextLine());ArrayList<Point> points = new ArrayList<>();for (int i = 0; i < count; i++) {points.add(new Point(input.nextLine().split(" ")));}int counter = 0;for (int i = 0; i < count; i++) {for (int j = i + 1; j < count; j++) {for (int k = j + 1; k < count; k++) {for (int m = k + 1; m < count; m++) {if (isSquare(points.get(i), points.get(j), points.get(k), points.get(m))) {counter++;}}}}}System.out.println(counter);}public static boolean isSquare(Point p1, Point p2, Point p3, Point p4) {Point[] points = {p1, p2, p3, p4};int d1 = distance(p1, p2);int d2 = distance(p2, p3);int d3 = distance(p3, p4);int d4 = distance(p4, p1);int d5 = distance(p1, p3);int d6 = distance(p2, p4);HashSet<Integer> set = new HashSet<>();set.add(d1);set.add(d2);set.add(d3);set.add(d4);set.add(d5);set.add(d6);return set.size() == 2 && d1>0 && d2 > 0 && d3 > 0 && d4 > 0 && d5 > 0 && d6 > 0;}public static int distance(Point p1, Point p2) {int x = p1.x - p2.x;int y = p1.y - p2.y;return x*x + y*y;}static class Point {public int x;public int y;public Point(String[] xy) {this.x = Integer.parseInt(xy[0]);this.y = Integer.parseInt(xy[1]);}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com