D


私信TA

用户名:ALS1111

访问量:19649

签 名:

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

  自我简介:

TA的其他文章

python-乘积最大
浏览:204
python-回文数
浏览:176
python-摆花摆花
浏览:119

解题思路:由于题目中所给的一对点我们并不知道是做对角线的点还是右对角线的点,也不知道是先给的是左下角的点还是右上角的点(以左对角线为例)。因此我们需要先将点的位置确定,接下来就好计算了。

①根据所给的一堆点,我们可以确定(min(x1,x2),min(y1,y2))一定是左下角的点,(max(x1,x2),max(y1,y2))一定是右上角的点。

②重新确定完点的坐标之后,我们知道,如果两个矩形有重合,那么需要满足

    第一个矩形左下角的点一定小于第二个矩形右上角的点,

    第一个矩形右上角的点一定大于第二个矩形左下角的点。

③若②满足情况,

    将四个点的x坐标从小到大排序sort(x11,x12,x21,x22)

    将四个点的x坐标从小到大排序sort(y11,y12,y21,y22)

④相交面积 = 排序后x中间的两个点的差值 * 排序后y中间两个点的差值

注意事项:


参考代码:

def function():  
    A = list(map(float,input().split()))  
    B = list(map(float,input().split()))  
  
    Anew = [min(A[0],A[2]),min(A[1],A[3]),max(A[0],A[2]),max(A[1],A[3])]        #重新定位坐标  
    Bnew = [min(B[0],B[2]),min(B[1],B[3]),max(B[0],B[2]),max(B[1],B[3])]  
  
    if (Anew[0] < Bnew[2] and Anew[1] < Bnew[3]) and (Bnew[0] < Anew[2] and Bnew[1] < Anew[3]):  #判断是否相交  
        x = Anew[::2]+Bnew[::2]  
        y = Anew[1::2]+Bnew[1::2]  
        x.sort()            #对四个点的x坐标排序  
        y.sort()            #对四个点的y坐标排序  
  
        xd = x[2] - x[1]         #计算中间两个点的差值  
        yd = y[2] - y[1]          
  
        area = xd * yd  
    else:  
        area = 0  
  
    print('%.2f' % area)  
  
  
if __name__ == '__main__':  
    function()

 


 

0.0分

7 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区