• 判断两矩形是否相交


    问题定义:给定两个边与坐标轴平行的矩形,分别由左上角与右下角两点指定,即矩形(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;
             }
             
             
         }
        }
    
    }
  • 相关阅读:
    Chip Factory(HDU5536 + 暴力 || 01字典树)
    Xor Sum(HDU4825 + 字典树)
    Happy Matt Friends(HDU5119 + dp)
    Intersection(HDU5120 + 圆交面积)
    [iOS Animation]-CALayer 绘图效率
    [iOS Animation]-CALayer 性能优化
    [iOS Animation]-CALayer 定时器动画
    [iOS Animation]-CALayer 缓冲
    [iOS Animation]CALayer-图层时间
    [iOS Animation]-CALayer 显示动画
  • 原文地址:https://www.cnblogs.com/zwwang/p/13411108.html
Copyright © 2020-2023  润新知