【问题描述】
平面上有两个矩形A和B,其位置是任意的。编程求出其相交部分(如图中阴影部分)的面积。(0<a,b<1000)
【输入文件】
从标准输入读取两行以空格分隔的整数,格式如下:
Ax1 Ay1 Ax2 Ay2
Bx1 By1 Bx2 By2
其中(x1,y1)为矩形左上顶点座标,(x2,y2)为右下顶点座标。各座标值均为整数,取值在0至1000之间。
【输出文件】
向标准输出打印一个整数,是两矩形相交部分的面积(可能为0)。在输出末尾要有一个回车符。
#include<stdio.h>
int max(int m,int n)
{
if(m>n)
return m;
else
return n;
}
int min(int m,int n)
{
if(m>n)
return n;
else
return m;
}
int main(){
int ax1,ax2,ay1,ay2,bx1,bx2,by1,by2,a,b,c,d;
scanf("%d %d %d %d",&ax1,&ay1,&ax2,&ay2);
scanf("%d %d %d %d",&bx1,&by1,&bx2,&by2);
a=min(max(ax1,ax2),max(bx1,bx2));//取到了横坐标中第二大的值
b=min(max(ay1,ay2),max(by1,by2));//取到了纵坐标中第二大的值
c=max(min(ax1,ax2),min(bx1,bx2));//取到了横坐标中第二小的值
d=max(min(ay1,ay2),min(by1,by2));//取到了纵坐标中第二小的值
if ( a>c && b>d )
printf("%d",(a-c)*(b-d));
else
printf("0");
return 0;
}
相交面积为两矩形横坐标中间两值中最大值减去另一个值,纵坐标也是同林。编写两个函数一个求最大值,一个求最小值。先取两最大值在取两最大值中的最小值。再用最大值减去最小值,再底乘高为矩形相交面积。