[2011年NOIP提高组] 铺地毯
思路:运用暴力枚举法。开一个结构体存地毯信息,然后铺上地毯。然后在根据要找的地点,与输入顺序反着一一枚举来找符合的地毯(因为地毯会覆盖,先铺的在下面,后铺的才在上面),最后输出。如果找不到,就根据题目输出-1,。
代码如下:
#include<cstdio>
struct data{
int a;//横坐标
int b;//纵坐标
int g;//地毯在x轴上的长度
int k;//地毯在y轴上的长度
}car[10010];//存地毯信息
int main(){
int x,y; //所求的地面的点的坐标
int n;//地毯数
int i;//表示编号为i的地毯
scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%d%d%d%d",&car[i].a,&car[i].b,&car[i].g,&car[i].k);//铺地毯啦~~
scanf("%d%d",&x,&y);
for(i=n;i>=1;i--)//地毯会一层一层覆盖,所以后铺的会在上面,要倒着找
if(x>=car[i].a&&x<=car[i].a+car[i].g&&y>=car[i].b&&y<=car[i].b+car[i].k)//如果所求的地面的点的坐标恰好在范围内
break;//就结束
if(i==0)// 若此处没有被地毯覆盖则输出-1。
printf("-1\n");
else//否则,所求的地毯的编号
printf("%d\n",i);
}
标签:所求,NOIP,int,car,2011,地毯 From: https://www.cnblogs.com/xdzxyingrui/p/16586131.html