代码
#include<stdio.h>
int n;
//地毯的左下坐标(a,b)和地毯在 x 轴和 y 轴方向的长度
int a[10005],b[10005],x[10005],y[10005];
//所求的地面的点的坐标(sx ,sy)
int sx,sy;
int ans;//用作判断第几个地毯
int main()
{
scanf("%d",&n);//n张地毯
for(int i=1;i<=n;i++)
{
scanf("%d %d %d %d",&a[i],&b[i],&x[i],&y[i]);
}
scanf("%d %d",&sx,&sy);
ans=-1;
//枚举
//从最后面的地毯开始进行循环(因为题目是求在最上面的地毯)
for(int i=n;i>=1;i--)
{//利用坐标进行判断
if(sx>=a[i]&&sx<=a[i]+x[i]&&sy>=b[i]&&sy<=b[i]+y[i])
{
ans=i;
break;
}
}
printf("%d\n",ans);
return 0;
}
做题思路
观察题目:题目要求得到在某个点的最上面的那张地毯的编号(提取“最上面”和“编号”),其次我们可以得到一张图如下:
然后从图中可以得知x,y轴,说明是用坐标表示的地毯,所以我们需要定义坐标(a,b,x,y)来分别表示铺设地毯的左下角的坐标 (a,b)(a,b) 以及地毯在 xx 轴和 yy 轴方向的长度。(输入格式中有提到)
解题:根据观察题目得到的已知信息,我们需要定义一个n来表示总共有几张地毯,a,b,x,y来表示地毯,然后根据题目给我们的x1,y1坐标来跟所有的地毯坐标进行判断得知我们所求的地毯是第几章地毯。
eg:关于核心思路--判断第几张地毯的说明: