妙先生


私信TA

用户名:uq_57083779177

访问量:26519

签 名:

妙啊!

等  级
排  名 225
经  验 6249
参赛次数 0
文章发表 73
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:

1.png




    很容易看出相交的面积 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 人评分

  评论区

感谢分享,思路很不错!
2022-03-04 16:23:54
  • «
  • 1
  • »