欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

XTUOJ 1178Rectangle

墨初 知识笔记 98阅读
题目描述

给你两个平行于坐标轴的矩形请判断两者是不是相交面积有重合的部分

输入

第一行是一个整数K表示样例数。 每个样例占两行每行是4个整数表示一个矩形的对角线点的坐标坐标值为0到1,000之间。

输出

每个样例输出一个结果相交输出Yes否则输出No。

样例输入
20 0 1 11 1 2 20 0 2 21 1 3 3
样例输出
NoYes

解题思路

1把两个矩形的对角线都化成左下—右上的对角线 代码 23、24 行

2把两个对角线的坐标大小排好序让 (a1,b1) 是 最左下的点。 26、27行手动模拟、琢磨一下

3如果 (c1,d1) 在对角线为 a1,b1) 、(a2,b2) 的 矩形的内部那么这两个矩形就是相交的反之不然。

如图

AC代码 

#include <stdio.h>void swap(int &x,int &y){    if ( x > y)     {        int t  x;        x  y;        y  t;    }}int main(){    int k;    int a1,a2,b1,b2;    int c1,c2,d1,d2;    scanf(%d,&k);    while ( k-- )    {        scanf(%d %d %d %d,&a1,&b1,&a2,&b2);        scanf(%d %d %d %d,&c1,&d1,&c2,&d2);        swap(a1,a2);    swap(b1,b2);  //a1,b1 在左下角 a2,b2 在右上角         swap(c1,c2);    swap(d1,d2);  //都化成 (左下,右上) 的对角线        swap(a1,c1);    swap(a2,c2);  //小中取大:c1大中取小:a2 比较横坐标         swap(b1,d1);    swap(b2,d2);  //同理                    比较纵坐标         if (c1 < a2 && d1 < b2)   puts (Yes);        else                      puts (No);     }    return 0;} 

标签:
声明:无特别说明,转载请标明本文来源!