原题链接:蓝桥杯基础练习VIP-矩形面积交
解题思路:
很容易看出相交的面积 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分
5 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复