蓝桥杯练习系统习题(Python)--基础练习 矩形面积交

问题描述

  平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。

输入格式

  输入仅包含两行,每行描述一个矩形。
  在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。

输出格式

  输出仅包含一个实数,为交的面积,保留到小数后两位。


 100分

#记所给的两个矩形分别为a,b,所给的两点分别是1,2
ax1,ay1,ax2,ay2=list(map(float,input().split()))
bx1,by1,bx2,by2=list(map(float,input().split()))
#因为题目是要求保留两位小数,所以所给数据可能为浮点型数据,故用map()函数将输入的字符串转换成浮点型数据,并加入列表中
#接下来表示相交的矩形的对角线上的点
hx1=min(max(ax1,ax2),max(bx1,bx2))
hy1=min(max(ay1,ay2),max(by1,by2))
hx2=max(min(ax1,ax2),min(bx1,bx2))
hy2=max(min(ay1,ay2),min(by1,by2))
#然后判断相交不相交
if hx2>=hx1 and hy2>=hy1:
    x=y=0
else:
    x=hx1-hx2
    y=hy1-hy2
#若是两个矩形相离则x或者y中会有负值
s=x*y
if s<0:
    print("%.2f"%0)
else:
    print("%.2f"%s)

做题前需知

此题是一个二维问题,可以先考虑一维时的情况

A(红色)从左向右运动,B(蓝色)从右向左运动【如下图】

那么做两条线段将会有相交和不相交两种情况

 二维时

 相交的四种情况

 不相交的情况

 令相交区域的两个对角出坐标为(hx1,hy1)右上,(hx2,hy2)左下

那么综合相交的前三种情况来看

hx1=min(max(ax1,ax2),max(bx1,bx2))

hy1=min(max(ay1,ay2),max(by1,by2))

hx2=max(min(ax1,ax2),min(bx1,bx2))

hy2=max(min(ay1,ay2),min(by1,by2))

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值