关键点

  1. 暴力二维数组数据太大,用结构体记录地毯的数据;
  2. 地毯是一层一层覆盖的,可以从最后往前推;
  3. 判定目标点是否在地毯上,不在则拿走,判定前一张地毯,一直循环,找到则跳出循环,找不到则res不变;
  • 代码如下
#include <iostream>
#include<string>

using namespace std;
struct rug//地毯结构体的起始坐标,长度和宽度
{
	int x, y, w, h;
};
rug a[10005];//地毯数组
int  main()
{
	int n,nx,ny,res=-1;//res为结果
	cin >> n;
	for (int i = 1; i <= n; i++)
		cin >> a[i].x >> a[i].y >> a[i].w >> a[i].h;
	cin >> nx >> ny;
	for (int i = n; i > 0; i--)//从最后一张开始地毯判定目标点是否在内
	{
		if (nx >= a[i].x && ny >= a[i].y && nx <= (a[i].x + a[i].w) && ny <= (a[i].y + a[i].h))
		{
			res = i;
			break;
		}
	}
	cout << res;
	return 0;
}