Find the total area covered by two rectilinear rectangles in a 2D plane.
Each rectangle is defined by its bottom left corner and top right corner as shown in the figure.

很简单的一道题,纯考写代码。注意边界就好。
int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
int len1=C-A;
int wid1=D-B;
int len2=G-E;
int wid2=H-F;
int len=0,wid=0;
if(C<=E||A>=G||B>=H||D<=F) return len1*wid1+len2*wid2;//不相交直接加和
if(C<G){//相交长度
if(A<E){
len=C-E;
}else len=len1;
}else{
if(A>E){
len=G-A;
}else len=len2;
}
if(D>H){//相交宽度
if(B>F){
wid=H-B;
}else wid=wid2;
}else{
if(B<F){
wid=D-F;
}else wid=wid1;
}
return len1*wid1+len2*wid2-len*wid;
}
本文介绍了一种计算二维平面上两个直角矩形覆盖总面积的方法。通过判断矩形是否相交,并计算相交部分的面积来得出最终结果。提供了一个具体的C语言实现示例。
818

被折叠的 条评论
为什么被折叠?



