cuber QQ手上有12根木棍,它们的长度依次为l1,l2...l12.他想用一些木棒来拼出三角形,每一根木棒只能用在一个三角形中,求最多可以组成多少个三角形C++1秒,li<=10^9用上using namespace std;
时间: 2024-04-12 20:32:28 浏览: 17
以下是使用C++编写的解决方案,满足题目要求的时间限制,并包含了 `using namespace std;`:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int countTriangles(vector<int>& sticks) {
sort(sticks.begin(), sticks.end(), greater<int>());
int count = 0;
int n = sticks.size();
for (int i = 0; i < n - 2; i++) {
int a = sticks[i];
int b = sticks[i+1];
int c = sticks[i+2];
if (a < b + c) {
count++;
sticks.erase(sticks.begin() + i, sticks.begin() + i + 3);
n -= 3;
i = -1;
}
}
return count;
}
int main() {
vector<int> sticks = {l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12};
int triangleCount = countTriangles(sticks);
cout << "最多可以组成 " << triangleCount << " 个三角形" << endl;
return 0;
}
```
请将代码中的 `l1, l2, ..., l12` 替换为对应的木棍长度。运行程序后,即可得到最多可以组成的三角形数量。
希望对你有所帮助!如有其他问题,请随时提问。