当前位置: 首页> 文旅> 艺术 > 东莞常平常安医院_墨刀网页设计详细教程_网络营销和网站推广的区别_百度商城官网

东莞常平常安医院_墨刀网页设计详细教程_网络营销和网站推广的区别_百度商城官网

时间:2025/7/14 1:51:14来源:https://blog.csdn.net/arnold66/article/details/144853170 浏览次数:0次
东莞常平常安医院_墨刀网页设计详细教程_网络营销和网站推广的区别_百度商城官网

   前言

        工作了十几年,从普通的研发工程师一路成长为研发经理、研发总监。临近40岁,本想辞职后换一个相对稳定的工作环境一直干到老, 没想到离职后三个多月了还没找到工作,愁肠百结。为了让自己有点事情做,也算提高一下自己的编程能力,无聊之余打算用一些大厂的编程题练练手。希望通过这些分享能够帮到一些人,也希望能和看到此文的大神们沟通交流,提升自己,更希望在此期间能够找到一份理想的工作。

题目描述

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

输入

第一行输入为N,N代表坐标数量,N为正整数。N <= 100
之后的 K 行输入为坐标x y以空格分隔,x,y为整数,-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

解题思路

       根据两点计算组成正方形的另外两个点在不在数组内。

题解

Java实现

package huawei.e100;import java.util.Scanner;/**
* @author arnold
* @date 2024年12月31日
* 构成正方形的数量*/
public class T43 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(sc.hasNext()) {int n = sc.nextInt();int[][] data = new int[n][2];for (int i = 0; i < data.length; i++) {data[i][0] = sc.nextInt();data[i][1] = sc.nextInt();}int res = run(data);System.out.println(res);}}static int run(int[][] data) {int res = 0;if(data.length >= 4) {for (int i = 0; i < data.length-1; i++) {for (int j = i+1; j < data.length; j++) {int y1 = data[j][1]-(data[j][0] - data[i][0]);int x1 = data[j][0]+(data[j][1] - data[i][1]);int y2 = data[i][1]-(data[j][0] - data[i][0]);int x2 = data[i][0]+(data[j][1] - data[i][1]);//如果坐标点中包含这两个坐标,则能形成正方形。int has = 0;for (int k = 0; k < data.length; k++) {if((data[k][0] == x1 && data[k][1] == y1) || (data[k][0] == x2 && data[k][1] == y2)) {has++;}}if(has == 2) {res++;}// 第二种可能int y3 = data[j][1]+(data[j][0] - data[i][0]);int x3 = data[j][0]-(data[j][1] - data[i][1]);int y4 = data[i][1]+(data[j][0] - data[i][0]);int x4 = data[i][0]-(data[j][1] - data[i][1]);//如果坐标点中包含这两个坐标,则能形成正方形。has = 0;for (int k = 0; k < data.length; k++) {if((data[k][0] == x3 && data[k][1] == y3) || (data[k][0] == x4 && data[k][1] == y4)) {has++;}}if(has == 2) {res++;}}}} // 同一个正方形会计算4次return res/4;}}

关键字:东莞常平常安医院_墨刀网页设计详细教程_网络营销和网站推广的区别_百度商城官网

版权声明:

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

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

责任编辑: