MT1184矩形相交 题解【超详细】

目录

题目

样例

题目解析

代码

图解 

矩形相交


题目

输入2个矩形的左上角和右下角两个点的坐标值(x,y),判断2个矩形是否相交,输出YES或者NO。矩形的边应与x,y轴相平行。假定输入坐标能顺利构成矩形,不考虑无效矩形的况  

难度:白银

格式:

输入格式:输入整型,空格分隔。 每行输入一组信息。

输出格式:输出YES或者NO

题目链接 :矩形相交

样例

输入:
-20 20 20 -10 
-10 10 10 -5
输出:
NO

备注:特殊情况考虑:在数学中,两个图形相交是指它们有公共的部分,或者说同时属于两者的点的集合不是空集。若两个几何图形在某个地方有且只有一个交点,则可以称为相切而不是相交。即,在此题中,两矩形只有一交点视为相切,有一条边完全或者部分重合视为相交。两矩形完全重合,视为重合不是相交

题目解析

矩形相交,思路是先考虑特殊情况 。根据输入的是 左上和右下的坐标 

  1. 两个矩形完全重合的时候,该题判为重合而 不是相交。
  2. 两个矩形只有一个点相交,该题即判为相切而 不是相交
  3. 两个矩形没有任何交集, 不是相交

代码

#include<stdio.h>
#include<math.h>
int main()
{int x1, y1, x2, y2, x3, y3, x4, y4;scanf("%d %d %d %d\n%d %d %d %d", &x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4);if(x1==x3&&y1==y3&&x2==x4&&y2==y4)//重合不是相交{printf("NO");return 0;}else if( (x2==x3&&y2==y3) || (y1==y4&&x2==x3) || (y3==y2&&x4==x1) || (x4==x1&&y4==y1))//相切不是相交{printf("NO");return 0;        }else if(( x1<x3&&x4<x2&&y4>y2&&y1>y3 )  ||(x3<x1&&x2<x4&&y2>y4&&y3>y1))//包含不是相交{printf("NO");return 0;        }else if(x1>x4||x2<x3||y1<y4||y2>y3){//两个矩形的相对位置 左右上下printf("NO");return 0;     }elseprintf("YES");return 0;
} 

图解 

下面列出的是不相交的图案 ,当把所有不相交的情况列出,剩余的就是相交的

  1. 两个矩形重合
    x1==x3&&y1==y3&&x2==x4&&y2==y4

  2. 相切(相交于一点)
    (x2==x3&&y2==y3) || (y1==y4&&x2==x3) || (y3==y2&&x4==x1) || (x4==x1&&y4==y1)

  3. 嵌套
    ( x1<x3&&x4<x2&&y4>y2&&y1>y3 )  ||(x3<x1&&x2<x4&&y2>y4&&y3>y1)

     
  4. 相对位置 左右上下
    x1>x4||x2<x3||y1<y4||y2>y3

注意上述是矩形不相交的情况

矩形相交

矩形相交还有其他解法 就是比如 直接把所有矩形的相交的情况全部列出来,然后找规律(提示 点在线上)

下面是矩形相交的情况

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/141334.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

命令执行(rce)

1.命令与代码执行原理 命令执行原理 参数给变量未经过滤&#xff0c;直接使用了不安全的函数处理了变量 127.0.0.1&&ipconfig 有漏洞 常用的函数 assert,system,exec,shell_exec, eval,(反单引号&#xff09; 代码执行原理 参数给变量未经过滤&#xff…

基于微信小程序的健身房私教预约平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

阿里云服务器使用教程(从购买到配置再到搭建自己的网站)

阿里云服务器使用教程包括云服务器购买、云服务器配置选择、云服务器开通端口号、搭建网站所需Web环境、安装网站程序、域名解析到云服务器公网IP地址&#xff0c;最后网站上线全流程&#xff0c;阿小云分享阿里云服务器详细使用教程&#xff1a; 目录 阿里云服务器使用教程 …

PostgreSQL如何支持PL/Python过程语言

瀚高数据库 目录 环境 文档用途 详细信息 环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7 版本&#xff1a;10.4 文档用途 本文档主要介绍PostgreSQL如何支持PL/Python过程语言&#xff0c;如何创建plpython扩展。 详细信息 一、PostgreSQL支持python语言…

215 数组中的第K个最大元素

满足时间复杂度o(n)的方法&#xff1a; 快排的思想 class Solution{ public:int findKthLargest(vector<int>& nums,int k){return quickSelect(nums,k);} private:int quickSelect(vector<int>& nums,int k){//随机选择基数int privotnums[rand()%nums…

Quartz 体系结构

Quartz的体系结构 Quartz的重要组件 Scheduler 用于与调度程序交互的主程序接口。 Scheduler调度程序-任务执行计划表&#xff0c;只有安排进执行计划的任务Job&#xff08;通过scheduler.scheduleJob方法安排进执行计划&#xff09;&#xff0c;当它预先定义的执行时间到了的时…

华为云云耀云服务器L实例评测|如何保障华为云云耀云服务器L实例的安全和性能

引言 云耀云服务器L实例是华为云提供的高性能计算实例&#xff0c;为用户提供稳定可靠的云计算环境。为了保障实例的安全和性能&#xff0c;用户可以通过设置防火墙和安全组策略来限制网络访问和防止恶意攻击。华为云提供了灵活的管理工具&#xff0c;用户可以通过控制台、API…

tomcat启动,测试被拒绝连接

tomcat镜像下载下来后&#xff0c;启动容器&#xff0c;测试连接被拒绝。也闪退。 报错信息如下&#xff1a; curl: (7) Failed connect to localhost:8888; 拒绝连接解决方式&#xff1a; # 启动时给root实际权限&#xff0c;即可成功连接 docker run -d -p 8888:8080 --pri…

基于微信小程序的线上教育课程付费商城(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

SpringMVC 学习(一)Servlet

1. Hello Servlet (1) 创建父工程 删除src文件夹 引入一些基本的依赖 <!--依赖--> <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test<…

【洛谷 P1644】跳马问题 题解(动态规划)

跳马问题 题目背景 在爱与愁的故事第一弹第三章出来前先练练四道基本的回溯/搜索题吧…… 题目描述 中国象棋半张棋盘如图 1 1 1 所示。马自左下角 ( 0 , 0 ) (0,0) (0,0) 向右上角 ( m , n ) (m,n) (m,n) 跳。规定只能往右跳&#xff0c;不准往左跳。比如图 1 1 1 中所…

Spring Cloud Alibaba Gateway 简单使用

文章目录 Spring Cloud Alibaba Gateway1.Gateway简介2. 流量网关和服务网关的区别3. Spring Cloud Gateway 网关的搭建3.1 Spring Cloud Gateway 配置项的说明3.2 依赖导入3.3 配置文件 Spring Cloud Alibaba Gateway 1.Gateway简介 Spring Cloud Gateway是一个基于Spring F…

变量和配置文件

文章目录 变量和配置文件1. 变量1.1 系统变量1.1.1 系统变量分类1.1.2 查看系统变量1.1.3 修改系统变量的值 1.2 用户变量1.2.1 用户变量分类1.2.2 会话用户变量1.2.3 局部变量1.2.4 会话用户变量月局部变量对比 2. 配置文件的使用2.1 配置文件格式2.2 启动命令与选项组2.3 特定…

安卓逆向 - EdXposed LSPosed VirtualXposed

一、引言 接上篇&#xff1a;安卓逆向 - Xposed入门教程_小馒头yy的博客-CSDN博客 我们介绍了Xposed入门安装使用&#xff0c;但是只支持到Android 8&#xff0c;并且安装模块需要重启。今天我们来看看Xposed的其他版本。 二、各种Xposed框架对比 1、Xposed 只支持到安卓8&…

Linux基础指令(五)

目录 前言1. 打包和压缩1.1 是什么1.2 为什么1.3 怎么办&#xff1f; 2. zip & unzip3. tar 指令结语&#xff1a; 前言 欢迎各位伙伴来到学习 Linux 指令的 第五天&#xff01;&#xff01;&#xff01; 在上一篇文章 Linux基本指令(四) 当中&#xff0c;我们学习了 fin…

软考高级架构师下篇-17安全架构设计理论与实践

目录 1. 引言信息安全面临的威胁2. 安全体系架构的范围3.典型安全模型4.信息安全整体架构设计5.数据库系统安全设计6.系统架构脆弱性分析7.安全架构设计实践8. 前文回顾1. 引言 随着科技的发展,信息系统的安全受到诸多方面的威胁,设计信息系统安全架构需要从各个方面考虑,这…

C++核心编程

本阶段主要针对C面向对象编程技术做详细讲解&#xff0c;探讨C中的核心和精髓。 1 内存分区模型 C程序在执行时&#xff0c;将内存大方向划分为4个区域 代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理的 全局区&#xff1a;存放全局变量和静态变量…

总结 HTTP 协议的基本格式和 fiddler 的用法

HTTP基本格式 HTTP协议也是日常开发中非常常用的的一种协议&#xff0c;在众多协议栈里HTTP可能是实际开发中用的最多的。 注意 这里说的HTTP是指HTTP1以及HTTP2&#xff0c;他们都是基于TCP协议的&#xff0c;注意&#xff1a;如今最新版的HTTP3是基于UDP的。 但如今在互联网…

SQL server 创建存储过程

SQL Server如何创建存储过程 存储过程&#xff1a; 可以理解为完成特定功能的一组 SQL 语句集&#xff0c;存储在数据库中&#xff0c;经过第一次编译&#xff0c;之后的运行不需要再次编译&#xff0c;用户通过指定存储过程的名字并给出参数&#xff08;如果该存储过程带有参数…

常用数据库validationQuery语句

常用数据库validationQuery语句 validationQuery是用来验证数据库连接的查询语句&#xff0c;这个查询语句必须是至少返回一条数据的SELECT语句。每种数据库都有各自的验证语句&#xff0c; 下表中收集了几种常见数据库的validationQuery。DataBase validationQueryhsqldb …