ToB企服应用市场:ToB评测及商务社交产业平台

标题: 一批点中,找出能找出多少对可以组成的矩形 [打印本页]

作者: 河曲智叟    时间: 2024-10-1 12:46
标题: 一批点中,找出能找出多少对可以组成的矩形
 
  /*
思索题:
有一个Point类,保存了x,y.
  通过控制台录入了n,
然后录入了n个坐标。
保存在了集合中。
排序 去重
  查找这些点能组成矩形的环境,有多少组。
  
排序,则必要什么规则
去重,必要怎样处置处罚Point类中的方法
  即排序又去重,应当接纳什么类
  * */
   
  1. package point;
  2. import java.util.*;
  3. class Point implements Comparable<Point>{
  4.     private int x,y;
  5.     public Point(int x, int y) {
  6.         this.x = x;
  7.         this.y = y;
  8.     }
  9.     public int getX() {
  10.         return x;
  11.     }
  12.     public void setX(int x) {
  13.         this.x = x;
  14.     }
  15.     public int getY() {
  16.         return y;
  17.     }
  18.     public void setY(int y) {
  19.         this.y = y;
  20.     }
  21.     @Override
  22.     public boolean equals(Object o) {
  23.         if (this == o) return true;
  24.         if (o == null || getClass() != o.getClass()) return false;
  25.         Point point = (Point) o;
  26.         return x == point.x && y == point.y;
  27.     }
  28.     @Override
  29.     public int hashCode() {
  30.         return Objects.hash(x, y);
  31.     }
  32.     @Override
  33.     public String toString() {
  34.         return "Point{" +
  35.                 "x=" + x +
  36.                 ", y=" + y +
  37.                 '}';
  38.     }
  39.     @Override
  40.     public int compareTo(Point o) {
  41.         if(this.x==o.x)
  42.             return this.y-o.y;
  43.         else
  44.             return this.x-o.x;
  45.     }
  46. }
  47. public class MainTest {
  48.     public static void main(String[] args) {
  49.         Scanner in= new Scanner(System.in);
  50.         TreeSet<Point> set= new TreeSet<>();
  51.         int n=in.nextInt();
  52.         for(int i=0;i<n;i++){
  53.             int x,y;
  54.             x=in.nextInt();
  55.             y=in.nextInt();
  56.             set.add(new Point(x,y));
  57.         }
  58.         int res=0;
  59.         ArrayList<Point> list = new ArrayList<>(set);//set转为列表
  60.         for(int i=0;i<list.size();i++){
  61.             for(int j=0;j<list.size();j++){
  62.                 if(list.get(i).getX()<list.get(j).getX() && list.get(i).getY()<list.get(j).getY()
  63.                 &&list.contains(new Point(list.get(i).getX(),list.get(j).getY()))
  64.                 &&list.contains(new Point( list.get(j).getY(),list.get(i).getX()))
  65.                 ){
  66.                     res++;
  67.                 }
  68.             }
  69.         }
  70.         System.out.println(res);
  71.     }
  72. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4