代码解析
在 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 人评分
C语言程序设计教程(第三版)课后习题6.3 (Java代码)浏览:695 |
奖学金 (C++代码)浏览:2055 |
C语言程序设计教程(第三版)课后习题8.9 (Java代码)浏览:1413 |
【回文数(二)】 (C语言代码)浏览:800 |
【明明的随机数】 (C++代码)浏览:834 |
Pascal三角 (C语言代码)浏览:1252 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:490 |
GC的苦恼 (C语言代码)浏览:672 |
淘淘的名单 (C语言代码)浏览:1309 |
上车人数 (C语言代码)浏览:753 |