铜煤建设网站,连云港企业建站 网站,wordpress企业主题 视频,深圳龙岗今天新闻头条题目描述
给你两个平行于坐标轴的矩形#xff0c;请判断两者是不是相交#xff08;面积有重合的部分#xff09;#xff1f;
输入
第一行是一个整数K#xff0c;表示样例数。 每个样例占两行#xff0c;每行是4个整数#xff0c;表示一个矩形的对角线点的坐标#x…题目描述
给你两个平行于坐标轴的矩形请判断两者是不是相交面积有重合的部分
输入
第一行是一个整数K表示样例数。 每个样例占两行每行是4个整数表示一个矩形的对角线点的坐标坐标值为0到1,000之间。
输出
每个样例输出一个结果相交输出Yes否则输出No。
样例输入
2
0 0 1 1
1 1 2 2
0 0 2 2
1 1 3 3
样例输出
No
YesAC代码
#includestdio.h
int Max(int a,int b){if(ab)return a;else return b;
}
int Min(int a,int b){if(ab)return b;else return a;
}
int main()
{int T;scanf(%d,T);while(T--){int x1,y1,x2,y2;scanf(%d%d%d%d,x1,y1,x2,y2);int x3,y3,x4,y4;scanf(%d%d%d%d,x3,y3,x4,y4);double ox1(x1x2)/2;//矩形中心坐标值 double oy1(y1y2)/2;double ox2(x3x4)/2;double oy2(y3y4)/2;double lx(Max(x1,x2)-Min(x1,x2)Max(x3,x4)-Min(x3,x4))/2;//两个矩阵相邻拼起来的一半 double ly(Max(y1,y2)-Min(y1,y2)Max(y3,y4)-Min(y3,y4))/2;double t1Max(ox1,ox2)-Min(ox1,ox2);//中心坐标差值 double t2Max(oy1,oy2)-Min(oy1,oy2);if(t1lxt2ly){printf(Yes\n);}else printf(No\n);}
}
解题思路如果两个矩形中心点的横纵坐标的差都小于两个矩阵相邻拼接起来的长度的一半则两个矩形相交。
AC代码
#includestdio.h
int Max(int a,int b){if(ab)return a;else return b;
}
int Min(int a,int b){if(ab)return b;else return a;
}
int main()
{int T;scanf(%d,T);while(T--){int x1,y1,x2,y2;scanf(%d%d%d%d,x1,y1,x2,y2);int x3,y3,x4,y4;scanf(%d%d%d%d,x3,y3,x4,y4);int t1,t2,t3,t4;int max1Max(Min(x1,x2),Min(x3,x4));int min1Min(Max(x1,x2),Max(x3,x4));int max2Max(Min(y1,y2),Min(y3,y4));int min2Min(Max(y1,y2),Max(y3,y4));if(max1min1max2min2){printf(Yes\n);}else printf(No\n);}
}