用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]
- Python 实现赛车手积分排名:从数据到清晰榜单(字节豆包 | 182点数解答 | 2024-10-20 16:16:44)271
- C3期末:精准求解 3 - 20 范围内数列第 k 项值及注意要点(字节豆包 | 242点数解答 | 2025-06-15 11:26:19)130
- C++求解:查找3 - 20项数列第k项值及注意要点(字节豆包 | 325点数解答 | 2025-06-15 11:27:11)146
- Python匈牙利算法:求解二分图最大匹配边数(含代码及详细解析)(字节豆包 | 715点数解答 | 2025-12-12 18:44:19)41
- 二分图最大匹配边数求解:从输入到代码实现全解析(字节豆包 | 275点数解答 | 2025-12-13 21:24:15)40
- Linux开发:用find命令查找/usr目录下超1MB的文件(百度文心 | 153点数解答 | 2023-11-09 18:45:10)198
- 8 个实用命令,助 Linux 开发者轻松查找服务器平均负载!(百度文心 | 311点数解答 | 2023-11-09 18:47:10)215
- C++实现顺序存储结构基本操作:初始化、插入、删除等全解析(GPT | 1743点数解答 | 2024-09-26 00:20:17)271
- C 语言实现:精准查找比特流中的同步码(字节豆包 | 336点数解答 | 2024-11-14 22:45:41)132
- C语言实现多班级学生信息管理系统:含增删改查与多样排序功能(GPT | 2547点数解答 | 2024-12-15 22:08:58)351
- C语言实现学生信息管理系统:含增删改查与多种排序功能(GPT | 6408点数解答 | 2024-12-15 22:10:03)336
- Python 实现多功能手机通讯录:添加、查看、删除、修改、查找全搞定!(字节豆包 | 1030点数解答 | 2025-06-05 15:47:56)231