本文共 2291 字,大约阅读时间需要 7 分钟。
平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。
输入格式 输入仅包含两行,每行描述一个矩形。 在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。 输出格式 输出仅包含一个实数,为交的面积,保留到小数后两位。 样例输入 1 1 3 3 2 2 4 4 样例输出 1.00C语言代码:
#include/*#define max(x,y) ((x)>(y)?(x):(y))#define min(x,y) ((x)<(y)?(x):(y))*/ //这里也可以用宏定义的方法来使用max和min函数 double max(double a,double b){ if(a>b) return a; else return b;}double min(double a,double b){ if(a>b) return b; else return a;}int main (){ double a1,b1,a2,b2,a3,b3,a4,b4; scanf("%lf %lf %lf %lf",&a1,&b1,&a2,&b2); scanf("%lf %lf %lf %lf",&a3,&b3,&a4,&b4); double m1 = max(min(a1,a2),min(a3,a4)); double n1 = max(min(b1,b2),min(b3,b4)); double m2 = min(max(a1,a2),max(a3,a4)); double n2 = min(max(b1,b2),max(b3,b4)); //这四行取出第一个矩形最大的点,第二个矩形最小的点 if(m1 < m2 && n1 < n2) //判断有没有相交 { printf("%.2lf\n",(m2 - m1) * (n2 - n1)); } else printf("0.00\n"); return 0; }
C++:
#include#include #include #include using namespace std;int main(){ double x1,x2,y1,y2; double q1,q2,w1,w2; while(cin>>x1>>y1>>x2>>y2>>q1>>w1>>q2>>w2) { double xx=max(min(x1,x2),min(q1,q2)); double yy=max(min(y1,y2),min(w1,w2)); double xxup=min(max(x1,x2),max(q1,q2)); double yyup=min(max(y1,y2),max(w1,w2)); if(xxup>xx) printf("%.2f\n",fabs((xx)-(xxup))*fabs((yy)-(yyup))); else printf("0.00\n"); }}
JAVA:
import java.io.*;public class Main{ public static void main(String[] args)throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); double[][] arr = new double[2][4]; String tag1[] = br.readLine().split(" "); String tag2[] = br.readLine().split(" "); for(int b=0;b<4;b++) { arr[0][b] = Double.valueOf(tag1[b]); } for(int b=0;b<4;b++) { arr[1][b] = Double.valueOf(tag2[b]); } double a,b,c,d,e,f,g,h; a = Math.max(arr[0][0],arr[0][2]); b = Math.min(arr[0][0],arr[0][2]); c = Math.max(arr[0][1],arr[0][3]); d = Math.min(arr[0][1],arr[0][3]); e = Math.max(arr[1][0],arr[1][2]); f = Math.min(arr[1][0],arr[1][2]); g = Math.max(arr[1][1],arr[1][3]); h = Math.min(arr[1][1],arr[1][3]); if(a
其实思路都是差不多的哈哈~~
转载地址:http://mjrzi.baihongyu.com/