题目链接
题目梗概
给出n个矩形的位置信息,和一个坐标。判断这个坐标是否在某个矩阵内,如果在,返回该矩阵的下标,如果有多个矩阵,返回下标最大的;如果不在,返回-1。
解题思路
按下标从小到大的顺序遍历矩形,判断目标点是否在该矩阵内。如果在,修改结果变量为当前矩阵下标,如果不在不处理。
函数功能
- include 函数
判断x是否以beg为起点,边长为len的线段内。
完整代码
#include <iostream>
#include <vector>
using namespace std;
struct Rug{
int a, b;
int x, y;
};
bool include(int beg, int len, int x){
if(x >= beg && x <= beg+len) return true;
else return false;
}
int main(){
int n;
cin >> n;
vector<Rug> rug;
Rug tmp;
for(int i = 0;i<n;++i){
cin >> tmp.a >> tmp.b >> tmp.x >> tmp.y;
rug.push_back(tmp);
}
int x, y;
cin >> x >> y;
int ans = -1;
for(int i = 0;i<n;++i){
if(include(rug[i].a, rug[i].x, x) && include(rug[i].b, rug[i].y, y)) ans = i+1;
}
cout << ans;
return 0;
}