用c++写一个计算最小矩形的代码
时间: 2024-10-06 12:02:07 浏览: 27
在C++中,你可以编写一个程序来计算给定一组点构成的最小包围矩形。这通常涉及到找出所有点对的最远X坐标减去最近X坐标的差值以及最远Y坐标减去最近Y坐标的差值,然后取这两个差值的最大值作为宽度和高度。这里是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
struct Point {
int x, y;
};
Point findMinRect(std::vector<Point>& points) {
// 初始化最大和最小坐标
int maxX = INT_MIN, minX = INT_MAX;
int maxY = INT_MIN, minY = INT_MAX;
for (const auto& point : points) {
maxX = std::max(maxX, point.x);
minX = std::min(minX, point.x);
maxY = std::max(maxY, point.y);
minY = std::min(minY, point.y);
}
// 计算宽和高
int width = maxX - minX + 1;
int height = maxY - minY + 1;
// 创建并返回一个临时点作为结果
return {width, height};
}
int main() {
std::vector<Point> points = {{1, 1}, {3, 4}, {6, 7}, {2, 5}};
Point minRect = findMinRect(points);
std::cout << "The minimum rectangle has width: " << minRect.x << ", and height: " << minRect.y << std::endl;
return 0;
}
```
这个程序首先找到所有点的X和Y坐标范围,然后计算出宽度和高度。注意,由于边界处理,我们需要在宽度和高度上加一。
阅读全文