蓝桥杯-矩形面积交

举报
positive 发表于 2022/02/22 11:23:49 2022/02/22
【摘要】 资源限制时间限制:1.0s   内存限制:512.0MB问题描述  平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。输入格式  输入仅包含两行,每行描述一个矩形。  在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。输出格式  输出仅包含一个实数,为交的面积,保留到...
资源限制
时间限制:1.0s   内存限制:512.0MB
问题描述
  平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。
输入格式
  输入仅包含两行,每行描述一个矩形。
  在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。
输出格式
  输出仅包含一个实数,为交的面积,保留到小数后两位。
样例输入
1 1 3 3
2 2 4 4
样例输出
1.00
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        //接收坐标点
        double x1=scanner.nextDouble();
        double y1=scanner.nextDouble();
        double x2=scanner.nextDouble();
        double y2=scanner.nextDouble();
        double x3=scanner.nextDouble();
        double y3=scanner.nextDouble();
        double x4=scanner.nextDouble();
        double y4=scanner.nextDouble();
        //先判断平行X轴的长度
        double max1,min1,max2,min2,x=0.0,maxy1,miny1,maxy2,miny2,y=0.0;
        //先判断第一个矩形
        if (x1>x2){
            max1=x1;
            min1=x2;
        }else {
            max1=x2;
            min1=x1;
        }
        //第二个矩形
        if (x3>x4){
            max2=x3;
            min2=x4;
        }else {
            max2=x4;
            min2=x3;
        }
        if (max1<=max2 && min1>=min2){
            x=max1-min1;//第一个在第二个内
        }else if (max2<=max1 && min2>=min1){
            x=max2-min2;//第二个在第一个内
        }else if (max2>min1 && max2<max1){
            x=max2-min1;//包含左边
        }else if (min2>min1 && min2<max1){
            x=max1-min2;//包含右边
        }
        //判断平行Y轴的长度
        //判断第一个矩形
        if (y1>y2){
            maxy1=y1;
            miny1=y2;
        }else {
            maxy1=y2;
            miny1=y1;
        }
        //第二个矩形
        if (y3>y4){
            maxy2=y3;
            miny2=y4;
        }else {
            maxy2=y4;
            miny2=y3;
        }
        if (maxy1<=maxy2 && miny1>=miny2){
            y=maxy1-miny1;//第一个在第二个内
        }else if (maxy2<=maxy1 && miny2>=miny1){
            y=maxy2-miny2;//第二个在第一个内
        }else if (maxy2>miny1 && maxy2<maxy1){
            y=maxy2-miny1;//包含下边
        }else if (miny2>miny1 && miny2<maxy1){
            y=maxy1-miny2;//包含上边
        }
        double num=x*y;//计算面积
        System.out.println(String.format("%.2f",num));
    }
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。