【C语言】之''矩阵相交''

老师平时布置的希冀系统上的作业答案,仅供参考!

【问题描述】

平面上有两个矩形A和B,其位置是任意的。编程求出其相交部分(如图中阴影部分)的面积。(0<=a,b<=1000)

【输入文件】

从标准输入读取两行以空格分隔的整数,格式如下:
Ax1 Ay1 Ax2 Ay2
Bx1 By1 Bx2 By2
其中(x1,y1)为矩形左上顶点下标,(x2,y2)为右下顶点下标。各座标值均为整数,取值在0至1000之间。

【输出文件】

向标准输出打印一个整数,是两矩形相交部分的面积(可能为0)。在输出末尾要有一个回车符。

【输入样例】

0 0 2 2
1 1 3 4

【输出样例】

1

【样例说明】

输入的两个矩阵的相交面积为1

【参考答案】

#include <stdio.h>

int max(int a, int b)
{
return (a > b) ? a : b;
}
int min(int a, int b)
{
return(a < b) ? a : b;
}

int main()
{
int Ax1, Ay1, Ax2, Ay2;
int Bx1, By1, Bx2, By2;
int s;

int a, b;//左上角的横纵
int c, d;//右下角的横纵

scanf("%d %d %d %d", &Ax1, &Ay1, &Ax2, &Ay2);
scanf("%d %d %d %d", &Bx1, &By1, &Bx2, &By2);

a = max( min(Ax1, Ax2), min(Bx1, Bx2) );
b = min( max(Ay1, Ay2), max(By1, By2) );
c = min( max(Ax1, Ax2), max(Bx1, Bx2) );
d = max( min(Ay1, Ay2), min(By1, By2) );

if ( a > c || b < d)
{
s = 0;
}
else
{
s = (c - a) * (b -d);
}
printf("%d", s);
return 0;
}
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容