解题思路:
为了计算矩形 R1 和 R2 的总面积,我们可以先计算每个矩形的面积,然后减去它们的重叠区域的面积。
矩形 R1 的面积可以通过计算底边长度乘以高度来得到,即:
area_R1 = (x2 - x1) * (y2 - y1)
同样地,矩形 R2 的面积可以通过计算底边长度乘以高度来得到,即:
area_R2 = (x4 - x3) * (y4 - y3)
要计算重叠区域的面积,我们需要确定重叠区域的左下角坐标和右上角坐标。
重叠区域的左下角坐标是两个矩形左下角坐标中相应维度上较大的值,即:
overlap_x1 = max(x1, x3)
overlap_y1 = max(y1, y3)
重叠区域的右上角坐标是两个矩形右上角坐标中相应维度上较小的值,即:
overlap_x2 = min(x2, x4)
overlap_y2 = min(y2, y4)
如果重叠区域的左下角坐标小于右上角坐标,说明存在重叠区域,可以计算重叠区域的面积,即:
overlap_area = max(0, overlap_x2 - overlap_x1) * max(0, overlap_y2 - overlap_y1)
否则,重叠区域的面积为0。
最后,总面积为矩形 R1 的面积加上矩形 R2 的面积,减去重叠区域的面积,即:
total_area = area_R1 + area_R2 - overlap_area
根据上述算法,可以计算出矩形 R1 和 R2 的总面积。
注意事项:
参考代码:
#include<stdio.h>
#include<math.h>
long int max(long int x,long int y)
{
return x > y ? x : y;
}
long int min(long int x,long int y)
{
return x < y ? x : y;
}
int main()
{
long int x1, x2, x3, x4, y1, y2, y3, y4,s,s1,s2,x_left,y_left,x_right,y_right;
scanf("%ld %ld %ld %ld %ld %ld %ld %ld", &x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4);
s1 = labs(x1 - x2) * labs(y1 - y2) + labs(x3 - x4) * labs(y3 - y4);
x_left = max(x1, x3);
y_left = max(y1, y3);
x_right = min(x2, x4);
y_right = min(y2, y4);
if (x_left < x_right && y_left < y_right)
{
s2 = labs(x_left - x_right) * labs(y_left - y_right);
}
else
s2 = 0;
s = s1 - s2;
printf("%ld", s);
return 0;
}
0.0分
4 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复