[2011年NOIP提高组] 铺地毯

[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);

}

posted @ 2022-08-14 19:37  shanyingrui  阅读(150)  评论(0)    收藏  举报