J.H


私信TA

用户名:dotcpp0649969

访问量:5189

签 名:

等  级
排  名 80
经  验 9561
参赛次数 1
文章发表 135
年  龄 0
在职情况 学生
学  校 桂林理工大学
专  业 计算机科学与技术

  自我简介:

TA的其他文章

解题思路:

为了计算矩形 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分

5 人评分

  评论区

  • «
  • »