代码拉取完成,页面将自动刷新
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
// 函数重载:计算三角形面积(海伦公式)
double triangleArea(double a, double b, double c) {
double s = (a + b + c) / 2.0;
return std::sqrt(s * (s - a) * (s - b) * (s - c));
}
// 主程序
int main() {
int m;
std::cout << "请输入木棍的数目m = ";
std::cin >> m;
if (m < 3) {
std::cout << "木棍数量不足,无法构成三角形。" << std::endl;
return 0;
}
std::vector<int> lengths(m);
std::cout << "请输入" << m << "根木棍长度:";
for (int i = 0; i < m; ++i) {
std::cin >> lengths[i];
}
// 排序木棍长度
std::sort(lengths.begin(), lengths.end());
double maxPerimeter = 0;
double maxArea = 0;
// 寻找最大周长和最大面积
for (int i = 0; i < m - 2; ++i) {
for (int j = i + 1; j < m - 1; ++j) {
for (int k = j + 1; k < m; ++k) {
if (lengths[i] + lengths[j] > lengths[k]) {
double perimeter = lengths[i] + lengths[j] + lengths[k];
if (perimeter > maxPerimeter) {
maxPerimeter = perimeter;
}
double area = triangleArea(lengths[i], lengths[j], lengths[k]);
if (area > maxArea) {
maxArea = area;
}
} else {
// 由于数组已排序,可以提前终止内层循环
break;
}
}
}
}
if (maxPerimeter == 0) {
std::cout << "无法构成三角形。" << std::endl;
} else {
std::cout << "构成的最大三角形周长为:" << maxPerimeter << std::endl;
std::cout << "构成的最大三角形面积为:" << maxArea << std::endl;
}
return 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。