White--Night 2021-12-03 18:26 采纳率: 100%
浏览 54
已结题

两个矩形是否相交的结果判断出错

问题遇到的现象和发生背景

判断两个矩形是否相交,若相交则输出yes,不然则输出no。
这个代码好像不能判断所有两个矩形不相交的情况,但一直找不到是哪种情况。

问题相关代码,请勿粘贴截图

#include <stdio.h>

int main(){
int t;
int x1,y1,x2,y2,x3,y3,x4,y4;
int i;

scanf("%d",&t);
for(i=1;i<=t;i++){
    scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
    scanf("%d %d %d %d",&x3,&y3,&x4,&y4);
    
    if(x1==x3&&x2==x4&&y1<y3&&y2<y4||x1==x3&&x2==x4&&y3<y1&&y4<y2){
        printf("NO\n");
    }else if(y1==y3&&y2==y4&&x1<x3&&x2<x4||y1==y3&&y2==y4&&x3<x1&&x4<x2){
        printf("NO\n");
    }else if(x2==x3&&y2==y3||x1==x4&&y1==y4||x2==x3&&y1==y4||x1==x4&&y2==y3){
        printf("YES\n");
    }else if(x1<x3&&x2<x4&&y1<y3&&y2<y4||x3<x1&&x4<x2&&y3<y1&&y4<y2||x2==x3){
        printf("NO\n"); 
    }else{
        printf("YES\n");
    }

}
return 0;
}

运行结果及报错内容

其中一组正确判断情况的输出结果:
3
0 0 10 10
11 11 20 20
NO
10 10 15 15
8 13 13 20
YES
4 4 20 20
20 20 30 30
YES

我的解答思路和尝试过的方法
我想要达到的结果

判断所有两个矩形不相交的情况

  • 写回答

1条回答 默认 最新

  • xuzuning 2021-12-04 13:11
    关注
    int x01 , x02 , y01 , y02 ;
    int x11 , x12 , y11 , y12 ;
    scanf("%d %d %d %d" ,&x01 ,&y01 ,&x02 , &y02) ;
    scanf("%d %d %d %d" ,&x11 , &y11 , &x12 , &y12) ;
    int zx = ab(x01+x02-x11-x12) ; //两个矩形重心在x轴上的距离的两倍
    int x = ab(x01-x02)+ab(x11-x12) ; //两矩形在x方向的边长的和
    int zy = ab(y01+y02-y11-y12) ;   //重心在y轴上距离的两倍
    int y = ab(y01-y02)+ab(y11-y12) ; //y方向边长的和
    if(zx <= x && zy <= y)
    printf("YES\n") ;
    else printf("NO\n") ;
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月13日
  • 已采纳回答 12月5日
  • 创建了问题 12月3日

悬赏问题

  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题