老师平时布置的希冀系统上的作业答案,仅供参考!
【问题描述】
平面上有两个矩形A和B,其位置是任意的。编程求出其相交部分(如图中阴影部分)的面积。
【输入形式】
从标准输入读取两行以空格分隔的整数,格式如下:
Ax1 Ay1 Ax2 Ay2
Bx1 By1 Bx2 By2
其中(x1,y1)和(x2,y2)为矩形对角线上端点的坐标。各坐标值均为整数,取值在0至1000之间。
【输出形式】
向标准输出打印一个整数,是两矩形相交部分的面积(可能为0)。
【输入样例】
0 0 2 2
1 1 3 4
【输出样例】
1
提示:输入的两点可以是矩形任一对角线上的端点,求相交的面积可以先求矩形在X轴和Y轴上的交集。矩形在X轴上的交集可以按照如下算法进行求解:假设AX1和AX2中的较大值为MAX_AX,较小值为MIN_AX;BX1和BX2中的较大值为MAX_BX,较小值为MIN_BX。用MAX_AX和MAX_BX中的较小者减去MIN_AX和MIN_BX中的较大者,结果为正表示两矩形在X轴上的交集,若为负则表示不相交
【参考答案】
#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 x1,x2,x3,x4,y1,y2,y3,y4,a,b,c,d,e,f,g,h,i,j,k,l;
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
scanf("%d %d %d %d",&x3,&y3,&x4,&y4);
a=max(y1,y2);
b=min(y1,y2);
c=max(y3,y4);
d=min(y3,y4);
e=max(x1,x2);
f=min(x1,x2);
g=max(x3,x4);
h=min(x3,x4);
i=min(a,c);
j=max(b,d);
k=min(e,g);
l=max(f,h);
if((i-j)>0&&(k-l)>0)
printf("%d",(i-j)*(k-l));
else
printf("0");
return 0;
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容