[笔试题]求两矩形的无重叠的面积之和
2013-10-07 22:39
309 查看
解题思路:
(1)关键是判断矩形的包含关系,故首先找出大矩形和小矩形;由于两种情况解法一样,故可以采用递归调用的方式,交换参数即可;
(2)矩形就4个端点,通过判断端点是否在另外一个矩形区域内,可以分情况讨论;
(3)分A(左上)、B(右上)、C(左下)、D(右下)四个端点讨论;
当A属于另一矩形时,返回的值和B、C的情况有关;
若A不属于另一矩形,当B属于另一矩形时,返回的值和C的情况有关;
若A/B当不属于另一矩形,当C属于另一矩形时,返回的值和D的情况有关;
只有D属于另一矩形;
ABCD都不属于另一矩形;
function solution($K, $L, $M, $N, $P, $Q, $R, $S) {
$s1 = ($M-$K)*($N-$L);
$s2 = ($R-$P)*($S-$Q);
if($s1>$s2){
$A = checkPoint($K, $L, $M, $N, $P, $S); // A--B
$B = checkPoint($K, $L, $M, $N, $R, $S); // | |
$C = checkPoint($K, $L, $M, $N, $P, $Q); // C--D
$D = checkPoint($K, $L, $M, $N, $R, $Q);
if($A)return $s1+$s2-(($B ? $R : $M)-$P)*($S-($C ? $Q : $L));
if($B)return $s1+$s2-($R-$K)*($S-($C ? $Q : $L));
if($C)return $s1+$s2-(($D ? $R : $M)-$P)*($N-$Q);
if($D)return $s1+$s2-($R-$K)*($N-$Q);
return $s1+$s2;
}
else{
return solution($P, $Q, $R, $S, $K, $L, $M, $N);
}
}
function checkPoint($K, $L, $M, $N, $X, $Y){
return ($X>$K && $X<$M && $Y>$L && $Y<$N);
}
相关文章推荐
- UVA 11345 Rectangles(n个矩形重叠覆盖的面积)
- 计算两个矩形重叠面积的简单方法
- hdoj2056(Rectangles 求矩形重叠面积
- 杭电acm2056 矩形重叠面积
- 屏幕坐标系获取两个矩形面积及重叠面积,重叠面积比率的java代码
- 如何判断两个矩形是否有重叠部分?(某公司校园招聘笔试试题)
- ZZULIOJ 1816: 矩形 【矩形重叠面积的计算(区分相离与相交)】
- hdu2056 矩形重叠面积(水题)
- hdu 1255 覆盖的面积 矩形D层以上重叠面积
- 如何判断两个矩形是否有重叠部分?(某公司校园招聘笔试试题)
- Torch 两个矩形框重叠面积的计算 (IoU between tow bounding box)
- POJ 1389 Area of Simple Polygons(多矩形重叠面积==离散化)
- 计算两个矩形重叠的面积
- 【名企笔试】美团2017校招笔试(最大矩形面积)
- 2019网易实习生招聘笔试题解 矩形重叠+数对个数+找工作
- 2017 icpc 南宁赛区 F.Overlapping Rectangles(重叠矩形的最大面积+线段树模板)
- 计算 矩形重叠面积
- 求若干矩形的不重叠面积 —— 模拟 + 优化
- 求两个矩形重叠部分的面积
- uva11983 - Weird Advertisement 矩形面积并 重叠大于等于K次的面积