C++二维装箱例子
时间: 2023-07-11 14:08:09 浏览: 94
以下是一个简单的 C++ 二维装箱例子:
```c++
#include <iostream>
#include <vector>
using namespace std;
struct Rectangle {
int width;
int height;
};
bool can_fit(Rectangle r, int x, int y, int W, int H) {
return (x + r.width <= W) && (y + r.height <= H);
}
void pack(vector<Rectangle>& rectangles, int W, int H) {
int x = 0, y = 0, row_height = 0;
for (Rectangle& r : rectangles) {
if (can_fit(r, x, y, W, H)) {
r.width = x;
r.height = y;
x += r.width;
row_height = max(row_height, r.height);
} else {
x = r.width;
y += row_height;
row_height = r.height;
}
}
}
int main() {
vector<Rectangle> rectangles = {{4, 3}, {2, 5}, {3, 2}, {5, 2}};
pack(rectangles, 10, 10);
for (Rectangle& r : rectangles) {
cout << "Width: " << r.width << ", Height: " << r.height << endl;
}
return 0;
}
```
该程序将一组矩形装入一个给定大小的矩形中。它使用了一个简单的贪心算法,从左上角开始,先尝试将矩形放在当前行中,如果不能放下,则将其移至下一行。最终,它输出每个矩形的宽度和高度,以便您可以查看装箱结果。
阅读全文