这题太简单,但也要细细的分析--铺地毯
2025-08-27 09:59:32
发布于:北京
0阅读
0回复
0点赞
北京降雨太大,导致我电脑C盘瘫痪受潮,不过我还可以用D盘。就和大脑一样,左脑用不了用右脑小脑前脑后脑。照样先来分析题目,
要解决这个问题,我们需要确定在指定坐标点上覆盖的最上层地毯的编号。由于地毯是按编号从小到大依次铺设的,后铺设的地毯会覆盖先铺设的地毯,因此我们需要从最后铺设的地毯开始检查,找到第一个覆盖指定点的地毯。
所以可以用到vector,也就是向量来解决此问题。
以下是C++代码,我附了注释有助于理解。
#include <iostream>
#include <vector>
using namespace std;
struct Carpet {
int a, b, g, k;
};
int main() {
int n;
cin >> n;
vector<Carpet> carpets(n);
for (int i = 0; i < n; ++i) {
cin >> carpets[i].a >> carpets[i].b >> carpets[i].g >> carpets[i].k;
}
int x, y;
cin >> x >> y;
// 从最后铺设的地毯开始检查
for (int i = n - 1; i >= 0; --i) {
const Carpet& c = carpets[i];
// 检查点(x,y)是否在当前地毯范围内
if (x >= c.a && x <= c.a + c.g && y >= c.b && y <= c.b + c.k) {
cout << i + 1 << endl; // 地毯编号从1开始
return 0;
}
}
// 没有地毯覆盖该点
cout << -1 << endl;
return 0;
}
这里空空如也
有帮助,赞一个