一只猪


私信TA

用户名:TuT99

访问量:11907

签 名:

拥有良好的积累,并且一直在路上,我相信自己有无限的可能

等  级
排  名 70
经  验 10268
参赛次数 6
文章发表 68
年  龄 21
在职情况 学生
学  校 哔哩哔哩大学
专  业 计算机科学与技术

  自我简介:

代码解析

在 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分

8 人评分

  评论区

  • «
  • »