这个地毯问题,只要把它转化为一个范围问题,就很简单了,设定数组来限制出每个矩形的x,y的范围,再从上往下比较就可以得出答案
我是想着弄个简单数据结构,限制出x,y的范围那,这个基本解决了,再用坐标来一个个比较就出来了;
#include <iostream>
using namespace std;
struct position
{
int x[2];
int y[2];
};
bool data(int m,int x1,int x2)
{
if(m>=x1&&m<=x2 )
return true;
else return false;
}
int main()
{
int n,i,x,y;
scanf("%d",&n);
position a[n];
for(i=0;i<n;i++)
{
scanf("%d%d%d%d",&a[i].x[0],&a[i].y[0],&x,&y);
a[i].x[1]=a[i].x[0]+x;
a[i].y[1]=a[i].y[0]+y;
}
scanf("%d%d",&x,&y);
int t=-1;
for(i=n-1;i>=0;i--)
{
if(data(x,a[i].x[0],a[i].x[1])&&data(y,a[i].y[0],a[i].y[1]))
{
t=i; break;
}
}
if(t!=-1)
{
t=t+1;
printf("%d",t);
}
else printf("-1");
return 0;
}


京公网安备 11010502036488号