当前位置: 首页 > article >正文

一批点中,找出能找出多少对可以组成的矩形

 

/*
思考题:
有一个Point类,保存了x,y.

通过控制台录入了n,
然后录入了n个坐标。
保存在了集合中。
排序 去重

查找这些点能组成矩形的情况,有多少组。


排序,则需要什么规则
去重,需要如何处理Point类中的方法

即排序又去重,应当采用什么类

* */


package point;



import java.util.*;

class Point implements Comparable<Point>{
    private int x,y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Point point = (Point) o;
        return x == point.x && y == point.y;
    }

    @Override
    public int hashCode() {
        return Objects.hash(x, y);
    }

    @Override
    public String toString() {
        return "Point{" +
                "x=" + x +
                ", y=" + y +
                '}';
    }

    @Override
    public int compareTo(Point o) {
        if(this.x==o.x)
            return this.y-o.y;
        else
            return this.x-o.x;
    }
}
public class MainTest {
    public static void main(String[] args) {
        Scanner in= new Scanner(System.in);
        TreeSet<Point> set= new TreeSet<>();
        int n=in.nextInt();
        for(int i=0;i<n;i++){
            int x,y;
            x=in.nextInt();
            y=in.nextInt();
            set.add(new Point(x,y));
        }
        int res=0;
        ArrayList<Point> list = new ArrayList<>(set);//set转为列表
        for(int i=0;i<list.size();i++){
            for(int j=0;j<list.size();j++){
                if(list.get(i).getX()<list.get(j).getX() && list.get(i).getY()<list.get(j).getY()
                &&list.contains(new Point(list.get(i).getX(),list.get(j).getY()))
                &&list.contains(new Point( list.get(j).getY(),list.get(i).getX()))
                ){
                    res++;
                }
            }
        }
        System.out.println(res);
    }
}


http://www.kler.cn/news/323140.html

相关文章:

  • 基于SSM的图书管理管理系统的设计与实现 (含源码+sql+视频导入教程)
  • 深入浅出MySQL事务处理:从基础概念到ACID特性及并发控制
  • ARM基础架构-文档导读系列
  • Nuxt.js提供了多种内置的性能优化策略
  • 在 CentOS 8 服务器上运行 Selenium 代码
  • Camera Raw:打开图像
  • UE5 C++: 插件编写04 | 增加和删改前缀
  • 蓝桥杯【物联网】零基础到国奖之路:十二. TIM
  • 数据结构 ——— 顺序表oj题:编写函数,合并两个有序数组
  • 【分布式微服务云原生】windows+docker+mysql5.7.44一主一从主从复制
  • TDengine 在业务落地与架构改造中的应用实践!
  • RK3568笔记六十三:基于LVGL的Linux相机
  • 基于python+flask+mysql的音频信息隐藏系统
  • 9.27 C++模板
  • Spring Boot 进阶-Spring Boot 开发第一个Web接口
  • 监控易监测对象及指标之:全面监控Oracle ODBC数据库
  • 汽车传感器的针脚数量因传感器类型和应用而异。
  • 图论系列(dfs)9/24
  • 解决你的IDE在使用的时候测试单元@Test在创建Scanner对象是键盘键入不了的问题;
  • jupyter快捷键
  • 猎板PCB大讲堂:PCB谐振效应及其对设计的影响
  • 探索高效中文分词:elasticsearch-analysis-hanlp 插件深度解析
  • Spring Cloud Alibaba-(4)Sentinel【流控和降级】
  • 每日一题|2516. 每种字符至少取 K 个|双指针、最长子串、字典
  • WebRTC中的维纳滤波器实现详解:基于决策导向的SNR估计
  • Ubuntu一些文件及问题研究分析
  • LabVIEW提高开发效率技巧----使用状态机架构
  • 华为云技术深度解析:Flexus X实例与GitLab的云端协作实践
  • pgsql
  • uniapp view增加删除线