问题遇到的现象和发生背景
判断两个矩形是否相交,若相交则输出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
我的解答思路和尝试过的方法
我想要达到的结果
判断所有两个矩形不相交的情况