给你一个数组 rectangles ,其中 rectangles[i] = [li, wi] 表示第 i 个矩形的长度为 li 、宽度为 wi 。 如果存在 k 同时满足 k <= li 和 k <= wi ,就可以将第 i 个矩形切成边长为 k 的正方形。例如,矩形 [4,6] 可以切成边长最大为 4 的正方形。 设 maxLen 为可以从矩形数组 rectangles 切分得到的 最大正方形 的边长。 请你统计有多少个矩形能够切出边长为 maxLen 的正方形,并返回矩形 数目 。该题目的c++完整可运行代码,且输入一行整数数组便可得到结果
时间: 2024-02-20 17:02:35 浏览: 23
好的,以下是该题目的C++完整可运行代码,且输入一行整数数组便可得到结果:
```c++
#include <iostream>
#include <vector>
#include <sstream>
#include <algorithm>
using namespace std;
int countGoodRectangles(vector<vector<int>>& rectangles) {
int maxLen = 0, count = 0;
for (vector<int>& rectangle : rectangles) {
int len = min(rectangle[0], rectangle[1]);
if (len > maxLen) {
maxLen = len;
count = 1;
} else if (len == maxLen) {
count++;
}
}
return count;
}
int main() {
string input;
getline(cin, input);
stringstream ss(input);
vector<vector<int>> rectangles;
int x;
while (ss >> x) {
vector<int> rectangle(2);
rectangle[0] = x;
ss >> x;
rectangle[1] = x;
rectangles.push_back(rectangle);
}
int count = countGoodRectangles(rectangles);
cout << "Number of rectangles that can be cut into squares with maximum length: " << count << endl;
return 0;
}
```
程序通过 `getline` 函数读取一行输入,然后通过 `stringstream` 将其转换为整数向量。程序接着将整数向量转换为矩形向量,并调用 `countGoodRectangles` 函数计算结果,最后输出。由于输入格式为一行整数数组,因此程序不需要提示用户输入行数和列数。