📅  最后修改于: 2023-12-03 14:58:32.161000             🧑  作者: Mango
这是一道常见的编程问题,即判断一个点是否在矩形(或圆形等形状)的内部或外部。本题将考察这方面的知识。
给出矩形的左下角和右上角两个点坐标,以及作为询问的点的坐标,问该点是否在矩形的内部。
输入共有 $n+1$ 行。
第一行包含一个整数 $n$,表示询问的次数。
接下来 $n$ 行,每行包含四个整数 $x_1$,$y_1$,$x_2$,$y_2$($|x_1|,|y_1|,|x_2|,|y_2| \leq 10^9$),表示矩形的左下角和右上角两个点的坐标。
最后 $1$ 行,包含 $x,y$($|x|,|y| \leq 10^9$),表示询问的点的坐标。
共 $n$ 行,每行一个字符串,表示作为询问的点是否在矩形内部。
如果在矩形内部,则输出字符串 "YES",否则输出字符串 "NO"。
3 0 0 4 4 1 1 2 2 1 1 3 3 3 2 5 5 0 4
YES NO YES
判断一个点是否在矩形内,最简单的方法当然是直接套用公式,判断点的坐标是否在矩形的坐标范围内。这里以左下角为原点,右上角为 $(x, y)$,那么点 $(a, b)$ 是否在矩形内,当且仅当 $a \in [0, x]$,$b \in [0, y]$。
C++代码实现如下:
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
while(n--)
{
int x1, y1, x2, y2, x, y;
cin >> x1 >> y1 >> x2 >> y2 >> x >> y;
if(x >= x1 && x <= x2 && y >= y1 && y <= y2)
cout << "YES\n";
else
cout << "NO\n";
}
return 0;
}
Python 代码实现如下:
n = int(input())
for _ in range(n):
x1, y1, x2, y2, x, y = map(int, input().split())
if x1 <= x <= x2 and y1 <= y <= y2:
print("YES")
else:
print("NO")
时间复杂度:$O(n)$。