解题思路:
很容易看出相交的面积 S = (x2-x3)(y2-y3), 仔细发现x2,x3是相交矩形的左右边的x坐标。y2,y3是相交矩形的上下边的y坐标。
进一步分析,相交矩形的左边线是两个矩形的左下标的x值的相比较大的一个也就是上图的x3,相交矩形的左边线是两个矩形的右上标的y值的相比较小的一个也就是上图的y2,所以我们可以得出
rx = min(max(x1,x2),max(x3,x4))
lx = max(min(x1,x2),min(x3,x4))
上下边的y坐标也是此规律。
注意事项:
加个判断是否相交。
参考代码:
xy1 = list(map(float,input().split())) xy2 = list(map(float,input().split())) rx = min(max(xy1[0],xy1[2]),max(xy2[0],xy2[2])) lx = max(min(xy1[0],xy1[2]),min(xy2[0],xy2[2])) uy = min(max(xy1[1],xy1[3]),max(xy2[1],xy2[3])) dy = max(min(xy1[1],xy1[3]),min(xy2[1],xy2[3])) w,h = rx-lx,uy-dy if w<=0.0 or h<=0.00: print("0.00") else: #print((str(w*h)+"00").split(".")[0]+"."+(str(w*h)+"00").split(".")[1][:2:]) 不进位输出小数点后两位 print("%.2f"%(w*h))
0.0分
7 人评分