zoukankan      html  css  js  c++  java
  • 基础练习 矩形面积交

    问题描述
      平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。
    输入格式
      输入仅包含两行,每行描述一个矩形。
      在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。
    输出格式
      输出仅包含一个实数,为交的面积,保留到小数后两位。
    样例输入
    1 1 3 3
    2 2 4 4
    样例输出
    1.00
     
    思路:自己想了很多种情况感觉这个题很麻烦,所以去网上找了以中思路,真的很巧妙
    1.先把两个矩形的最小x找出来(即每个矩形的左下角),然后求两个最小x求最大值,即相交矩形的左下角。
    2.再把两个矩形的最大x找出来(即每个矩形的右上角),然后求两个最大值的最小值,即相交矩形的右上角。
    3.同理得到相交矩形的y
    最后再做比较,判断是否相交
     1 #include<stdio.h>
     2 
     3 #define max(x,y) (x > y ? x : y)
     4 #define min(x,y) (x < y ? x : y)
     5 
     6 int main()
     7 {
     8     double a, b, c, d, A, B, C, D;
     9 
    10     scanf("%lf %lf %lf %lf", &a, &b, &c, &d);
    11     scanf("%lf %lf %lf %lf", &A, &B, &C, &D);
    12     double m, n, M, N;
    13     m = max(min(a, c), min(A, C));
    14     n = max(min(b, d), min(B, D));
    15     M = min(max(a, c), max(A, C));
    16     N = min(max(b, d), max(B, D));
    17     
    18     if (M > m&& N > n)
    19     {
    20         printf("%.2f", (M - m) * (N - n));
    21     }
    22     else
    23     {
    24         printf("0.00");
    25     }
    26     
    27     return 0;
    28 }
  • 相关阅读:
    Mac修改默认的电子邮箱客户端
    记录下生活:ETC卡充值(上海)
    Mac下卸载Mysql数据库
    网络爬虫学习笔记 1
    Clock置换算法
    用random.randint函数时 报错 'str' object cannot be interpreted as an integer问题
    分页式存储管理
    初学C++ vector 容器
    马一个讲devc++调试讲的很好的视频
    一些笔记(xss 跨站脚本攻击)
  • 原文地址:https://www.cnblogs.com/ZhengLijie/p/12695772.html
Copyright © 2011-2022 走看看