zoukankan      html  css  js  c++  java
  • 判断两矩形是否相交

    问题定义:给定两个边与坐标轴平行的矩形,分别由左上角与右下角两点指定,即矩形(P1,P2)与(P3,P4),判断两矩形是否相交。

    今天笔试的一个题目,其实挺简单的~~可惜当时没想出来

    解决思路见代码:

    import java.util.Scanner;
    
    public class Rectangle {
    /**
     * 给定两个边与坐标轴平行的矩形,分别由左上角与右下角两点指定,即矩形(P1,P2)与(P3,P4),判断两矩形是否相交。
     * 
     * 
     * 解决思路 :通过绘图不难发现,如果两个矩形相交,那么它们的外包矩形的长度或者宽度就会小于两个矩形的长度或者宽度之和
     * @param args
     */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
         Scanner sc=new Scanner(System.in);
         //输入八个整数,按照顺序两个整数表示一个点,两点构成一个矩形
         //这里稍微简便考虑,假设输入的对角线坐标为左下角和右上角坐标;
         while(sc.hasNext()){
             String[] str=sc.nextLine().split(" ");
             int arr[]=new int[str.length];
             for (int i=0;i<arr.length;i++){
                 arr[i]=Integer.parseInt(str[i]);
             }
             //外包矩形的x、y长度
             int xrange=Math.abs(arr[7]-arr[0]);
             int yrange=Math.abs(arr[1]-arr[6]);
             //两个矩形的x、y长度之和
             int recx=Math.abs(arr[2]-arr[0])+Math.abs(arr[4]-arr[6]);
             int recy=Math.abs(arr[1]-arr[3])+Math.abs(arr[5]-arr[7]);
             //如果两个矩形的长度之和或者宽度之和大于外包矩形的长度或者宽度,则说明相交
             if(recx>xrange||recy>yrange){
                 System.out.println("两个矩形相交!");
                 //return;
             }else{
                 System.out.println("不相交!");
                // return;
             }
             
             
         }
        }
    
    }
  • 相关阅读:
    阅读笔记——增强学习3
    阅读笔记——增强学习2
    阅读笔记——增强学习1
    阅读笔记十六
    阅读笔记十五
    MVC实例应用模式
    MVC浅谈
    设计模式理解
    某系统质量属性设计实现详述
    《大型网站架构》浅读有感
  • 原文地址:https://www.cnblogs.com/zwwang/p/13411108.html
Copyright © 2011-2022 走看看