酷代码 AI
菜单
服务商

用C++解决地毯覆盖点编号查找问题

以下是解决该问题的C++代码: ```cpp #include <iostream> using namespace std; // 定义地毯结构体 struct Carpet { int a, b, g, k; // 左下角坐标 (a, b) 以及 x 和 y 方向的长度 }; int main() { int n; cin >> n; // 输入地毯的数量 Carpet carpets[10001]; // 定义地毯数组,假设最多有 10000 张地毯 // 输入每张地毯的信息 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; // 初始化答案为 -1,表示未被覆盖 // 从后往前遍历地毯,找到最上面覆盖该点的地毯 for (int i = n; i >= 1; 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. **输出结果**:输出最终的答案,如果没有被地毯覆盖则输出 `-1`。 ######[AI问答 | 530点数解答 | 2026-02-27 19:34:45]

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