代码解析

在 main 函数中,首先读取一个整数 n,表示总共有 n 张地毯。

然后,创建一个大小为 n 的 Carpet 数组 carpets,用于存储每个地毯的信息。通过一个循环,逐个输入每个地毯的坐标、宽度和高度,并为其赋予一个编号。

接下来,再次读取两个整数 x 和 y,表示所求地面的点的坐标。

然后,从最后一张地毯开始判断,使用一个循环,从索引为 n-1 的地毯开始遍历到索引为 0 的地毯。对于每个地毯,判断给定的点 (x, y) 是否在该地毯范围内。如果是,则输出该地毯的编号,否则,那么我们输出 -1,表示该点不在地毯上。



注意事项:

参考代码:

#include <iostream>

using namespace std;


struct Carpet {

    int x;  // 地毯左下角的x坐标

    int y;  // 地毯左下角的y坐标

    int width;  // 地毯的宽度

    int height;  // 地毯的高度

    int id;  // 地毯的编号

};


int main() {

    int n;

    cin >> n;  // 总共有n张地毯


    Carpet carpets[n];

    for (int i = 0; i < n; i++) {

        cin >> carpets[i].x >> carpets[i].y >> carpets[i].width >> carpets[i].height;  // 输入每个地毯的信息

        carpets[i].id = i + 1;  // 地毯的编号

    }


    int x, y;

    cin >> x >> y;  // 所求的地面的点的坐标(x,y)


    // 从最后一张地毯开始判断

    for (int i = n - 1; i >= 0; i--) {

        if (x >= carpets[i].x && x <= carpets[i].x + carpets[i].width &&

            y >= carpets[i].y && y <= carpets[i].y + carpets[i].height) {

            cout << carpets[i].id << endl;

            return 0;

        }

    }


    cout << -1 << endl;  // 如果给定的点不在任何地毯内,则输出-1


    return 0;

}


点赞(0)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论