用c++代码实现下面题目:给你一个二维数组 nums ,其中 nums[i]=[li,wi] 表示第 i 个矩形的长度为 li 、宽度为 wi 。 如果存在 k 同时满足 k≤li 和 k≤wi ,就可以将第 i 个矩形切成边长为 k 的正方形。例如,矩形 [5,7] 可以切成边长最大为 5 的正方形。 设 maxLen 为可以从矩形数组 nums 切分得到的最大正方形的边长。 请你计算有多少个矩形能够切出边长为 maxLen 的正方形,并返回矩形数目 。
时间: 2024-02-12 07:03:57 浏览: 79
以下是用 C++ 实现的代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
int countMaxSquare(vector<vector<int>>& nums) {
int n = nums.size();
int maxLen = 0;
for (int i = 0; i < n; i++) {
maxLen = max(maxLen, min(nums[i][0], nums[i][1]));
}
int count = 0;
for (int i = 0; i < n; i++) {
if (nums[i][0] >= maxLen && nums[i][1] >= maxLen) {
count++;
}
}
return count;
}
int main() {
vector<vector<int>> nums = {{5, 7}, {3, 4}, {10, 12}, {2, 2}, {8, 9}};
int count = countMaxSquare(nums);
cout << count << endl; // 输出结果为 3
return 0;
}
```
代码思路:
首先遍历给定的二维数组,找到能够切成正方形的最大边长 maxLen。
然后再次遍历二维数组,统计能够切出边长为 maxLen 的正方形的矩形数目。
阅读全文