矩形嵌套动态规划c++ 代码实现
时间: 2023-07-08 08:07:00 浏览: 101
矩形嵌套是一个优化问题,可以使用动态规划来求解。以下是C++代码实现:
```cpp
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct Rectangle {
int w, h;
bool operator<(const Rectangle& r) const {
return w < r.w;
}
};
int main() {
int n; // 矩形个数
cin >> n;
vector<Rectangle> rects(n);
for (int i = 0; i < n; i++) {
cin >> rects[i].w >> rects[i].h;
}
sort(rects.begin(), rects.end());
vector<int> dp(n, 1); // dp[i] 表示以 rects[i] 为最大矩形的嵌套序列长度
for (int i = 1; i < n; i++) {
for (int j = 0; j < i; j++) {
if (rects[j].w < rects[i].w && rects[j].h < rects[i].h) {
dp[i] = max(dp[i], dp[j] + 1);
}
}
}
int ans = 0;
for (int i = 0; i < n; i++) {
ans = max(ans, dp[i]);
}
cout << ans << endl;
return 0;
}
```
该算法的时间复杂度为 $O(n^2)$,可以通过优化来达到 $O(n \log n)$。
阅读全文