酷代码 AI
菜单
服务商

C++实现查找覆盖指定点的最上面地毯编号

```cpp #include <iostream> using namespace std; const int MAXN = 10005; // 定义结构存储地毯信息 struct Carpet { int a, b; // 左下角坐标 int g, k; // 在x轴和y轴方向的长度 }; Carpet carpets[MAXN]; int main() { int n; cin >> n; // 读取每张地毯的信息 for (int i = 1; i <= n; i++) { cin >> carpets[i].a >> carpets[i].b >> carpets[i].g >> carpets[i].k; } int x, y; cin >> x >> y; int ans = -1; // 从后往前遍历地毯,找到最上面覆盖该点的地毯 for (int i = n; i >= 1; i--) { // 判断点(x, y)是否在第i张地毯内 if (x >= carpets[i].a && x <= carpets[i].a + carpets[i].g && y >= carpets[i].b && y <= carpets[i].b + carpets[i].k) { ans = i; break; } } cout << ans << endl; return 0; } ``` ### 代码解释 1. **结构体定义**:`Carpet` 结构体用于存储每张地毯的信息,包含左下角坐标 `a` 和 `b`,以及在 `x` 轴和 `y` 轴方向的长度 `g` 和 `k`。 2. **读取输入**:首先读取地毯的数量 `n`,然后循环读取每张地毯的信息并存储在 `carpets` 数组中。最后读取要查询的点的坐标 `(x, y)`。 3. **查找最上面的地毯**:从最后一张地毯开始向前遍历,判断点 `(x, y)` 是否在当前地毯的范围内。如果在范围内,则将该地毯的编号赋值给 `ans` 并跳出循环。 4. **输出结果**:如果 `ans` 仍然为 `-1`,表示该点没有被任何地毯覆盖,输出 `-1`;否则输出 `ans`。 ######[AI问答 | 522点数解答 | 2026-02-27 18:04:41]

相关提问
发财导航,免费问AI
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]