加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
未命名4.cpp 1.93 KB
一键复制 编辑 原始数据 按行查看 历史
#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;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化