求重叠区域

在练习代码能力的时候遇见这样一个题目:

平面内有n个矩形, 第i个矩形的左下角坐标为(x1[i], y1[i]), 右上角坐标为(x2[i], y2[i])。
如果两个或者多个矩形有公共区域则认为它们是相互重叠的(不考虑边界和角落)。
请你计算出平面内重叠矩形数量最多的地方,有多少个矩形相互重叠。
点计数法,重叠后的矩形左下角坐标一定是{x1[0]~x1[50], y1[0]~y1[50]}这2500个点中产生,

暂时想到一个比较笨的办法:两两比较做左下标,选出坐标中的值比较大的横纵坐标,即两个矩形离原点最近的交点

然后在以此为范围,依次遍历全部的模块,如果这个点在这个模块内,则这个模块与这两个模块有重叠

下面是代码:



import java.util.Scanner;

public class Num {
    static int[][] arr;
    static int res=1;
    static int n;

    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
         n=in.nextInt();
        /*if(n>=50||n<=2){
            return;
        }*/
         arr = new int[4][n];
        for(int i=0;i<4;i++){
            for(int j=0;j= arr[0][k] && y >= arr[1][k] && x < arr[2][k] && y < arr[3][k])
                        ++count;
                }//然后看跟那些快有交集计算count
                res=res>count?res:count;
            }
        }
        System.out.println(res);


    }
}

 

你可能感兴趣的:(算法,java)