标签:
seeyou
题目大意:给你两个矩形对角线两端的坐标,输出这两个矩形的相交面积
思路:假设两个矩形相交,则相交的矩形面积横坐标为四个横坐标中间的
两个横坐标,纵坐标为四个纵坐标中间的两个纵坐标,然后计算面积。若
两个矩形不相交,则相交面积为0.00。
那么怎么判断是否相交呢。思路很简单,分别计算出矩形1和矩形2最小和
最大和横、纵坐标,若矩形1的最小横坐标>=矩形2的最大横坐标 或者
矩形1的最大横坐标<=矩形2的最小横坐标 则两个矩形不可能相交,同理,
纵坐标也是如此。
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<cmath> using namespace std; int main() { double x[5],y[5],x1,x2,y1,y2; double Minx1,Minx2,Miny1,Miny2,Maxx1,Maxx2,Maxy1,Maxy2; while(cin >> x[0] >> y[0] >> x[1] >> y[1] >> x[2] >> y[2] >> x[3] >> y[3]) { Minx1 = min(x[0],x[1]); Minx2 = min(x[2],x[3]); Miny1 = min(y[0],y[1]); Miny2 = min(y[2],y[3]); Maxx1 = max(x[0],x[1]); Maxx2 = max(x[2],x[3]); Maxy1 = max(y[0],y[1]); Maxy2 = max(y[2],y[3]); if(Minx1>=Maxx2||Maxx1<=Minx2||Miny1>=Maxy2||Maxy1<=Miny2) { printf("0.00\n"); continue; } sort(x,x+4); sort(y,y+4); x1 = x[1]; x2 = x[2]; y1 = y[1]; y2 = y[2]; double S = fabs((y1-y2)*(x1-x2)); printf("%.2lf\n",S); } return 0; }
标签:
原文地址:http://blog.csdn.net/lianai911/article/details/42361951