我所用解法的核心:判断(x,y)是否在毯子的范围内,如果在,则更新color(即所指定点所覆盖的毯子编号),如果不在,则不用管
#include <iostream>
using namespace std;
int a[10100], b[10100], g[10100], k[10100]; //记录每个毯子的左下角坐标及长和宽
int n; //毯子的数量
int x, y; //被覆盖点的坐标
int main(void)
{
cin >> n;
int color = 0; //记录被覆盖点现在铺着哪块毯子
//输入a,b,j,k
for(int i = 1; i <= n; i++)
cin >> a[i] >> b[i] >> g[i] >> k[i];
cin >> x >> y;
//遍历每个毯子
for(int i = n; i >= 1; i--)
{
//如果x、y在毯子覆盖的范围内,则更新覆盖点的毯子编号
if(x >= a[i] && x <= a[i]+g[i] && y >= b[i] && y <= b[i]+k[i])
{
color = i;
break;
}
}
cout << color << endl;
return 0;
}