zoukankan      html  css  js  c++  java
  • [蓝桥杯][基础训练]矩形面积交

    Description

    平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。

    Input

    输入仅包含两行,每行描述一个矩形。
    在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。

    Output

    输出仅包含一个实数,为交的面积,保留到小数后两位。

    Sample Input

    1 1 3 3
    2 2 4 4
    

    Sample Output

    1.00
    


     1 #include<iostream>
     2 #include<algorithm>
     3 using namespace std;
     4 int main(){
     5     double x[4],y[4];
     6     cin>>x[0]>>y[0]>>x[1]>>y[1]>>x[2]>>y[2]>>x[3]>>y[3];
     7     //如果不相交 
     8     if(max(x[0],x[1])<=min(x[2],x[3])||max(x[2],x[3])<=min(x[0],x[1])||max(y[0],y[1])<=min(y[2],y[3])||max(y[2],y[3])<=min(y[0],y[1]))
     9         cout<<"0.00";//面积是0 
    10     else{
    11         sort(x,x+4);//排序 
    12         sort(y,y+4);
    13         double l=x[2]-x[1];//中间的两个作差 
    14         double w=y[2]-y[1];
    15         printf("%.2lf",l*w);//差相乘相交面积 
    16     }    
    17     return 0;
    18 }
    这个方法好,如果照自己的想,会炒鸡复杂。
    首先判断面积为0的情况,当一个矩形的横(纵)坐标的最大值小于另一个矩形的横(纵)坐标的最小值时,代表两个矩形不相交
    然后如果相交的话
    将横坐标排序,一共四个横坐标,第三个减去第二个,就是相交矩形的一条边的长
    对纵坐标作同样处理
    然后将相交矩形的长和宽相乘,得出结果




  • 相关阅读:
    15、Go语言基础之并发
    14、Go语言基础之反射
    13、Go语言基础之接口
    12、Go语言基础之包
    Golang ECHO中间件【10】
    Golang ECHO文件上传【9】
    关于数据治理的收获
    Java内存模型(JMM)和虚拟机(JVM)内存、GC
    图的m着色问题
    矩阵链乘法
  • 原文地址:https://www.cnblogs.com/fate-/p/12269417.html
Copyright © 2011-2022 走看看