女蛇妖吃人:一道编程题

来源:百度文库 编辑:高校问答 时间:2024/04/30 00:16:26
在XoY坐标平面上,给定两个矩形,它们的边分别与坐标轴平行。要求编程计算它们的交集的面积.
输入是矩形的左下角和右上角的顶点坐标(x1,y1), (x2,y2)。
0<=x1<x2<=200000,0<=y1<y2<=200000
输出它们的交集的面积.

大家不一定要编出程序,说说你的思路和算法就可以了.
我是觉得要分成挺多种情况的,想不清楚.
求助ing!

假设用户在输入时能保证输入的确实是左下角x1,y1和右上角坐标x2,y2,即x1<x2,y1<y2。再假设两个矩形分别为(x1,y1)-(x2,y2),(x3,y3)-(x4,y4)。

先判断x3,x4是否都小于x1,或都大于x2,如果是,则交集为空。否则,将x1,x2,x3,x4排序,排序之后的中间两个值的差记为dx。
同理处理y值,得到dy。
交集面积为dx * dy

如果要是都平行于坐标轴的话
将O点的坐标调整为到其中一个矩形的一个坐标最大或者最小的角的坐标然后转换两个矩形的相对坐标再获得两个矩形横纵坐标的差值的正值做乘积就可以了

我的表达力不太强不知道我这么说你能不能看的明白~

就给一个矩形的坐标呀?

说清楚点呀.你只给出一个矩形哪来的交集?