c++ - 需要创建算法来排序和输出结果
问题描述
给你 7 个数字,形式为 A、B、C、A+B、B+C、C+A 和 A+B+C。你必须用 C++ 编写一个程序,在给定这 7 个数字的情况下,它能够计算出 A、B 和 C 的值。请速帮忙!我已经创建了一个数组来查找这七个数字的最大值和最小值,现在我被卡住了。
这是我到目前为止所拥有的:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
int arr[10], n=7, i, max, min;
for (i = 0; i < n; i++)
cin >> arr[i];
max = arr[0];
for (i = 0; i < n; i++)
{
if (max < arr[i])
max = arr[i];
}
min = arr[0];
for (i = 0; i < n; i++)
{
if (min > arr[i])
min = arr[i];
}
}
样本输入: 2 2 11 4 9 7 9
该输入的输出: 2 2 7
解决方案
解决方案:
回答您的问题“需要创建算法来排序和输出结果”,您可以使用库中的 astd::array
和std::sort
函数algorithm
。
但是,即使您对它们进行排序,也不能保证三个最小的数字是 A、B 和 C,因为数组可以排序为 A、B、A+B、C、A+C、B+C 和 A+B+ C。您必须检查数组中的 3 是否为 A+B。
附加信息:
using namespace std;
被认为是一种不好的做法(更多信息在这里)。
完整代码:
#include <iostream>
#include <array>
#include <algorithm>
int main(){
constexpr unsigned int n = 7;
std::array<unsigned int, n> arr;
for (unsigned int i = 0; i < n; i++)
std::cin >> arr[i];
std::sort(arr.begin(),arr.end());
if(arr[2] == arr[0] + arr[1])
std::cout << arr[0] << " " << arr[1] << " " << arr[3] << "\n";
else
std::cout << arr[0] << " " << arr[1] << " " << arr[2] << "\n";
}
推荐阅读
- git - 提前掌握一次提交,Azure Devops
- angular - PrimeNg- 侧边栏模块未正确显示
- reactjs - 如何使用 Laravel 将 React 部署到我的开发服务器
- arduino - 在 2 个 arduino 之间使用 NRF24L01 发送多个传感器值
- javascript - 合并缺少键的对象
- reactjs - 升级 react-scripts 打破了这一点
- javascript - 如何使用 angular/javascript 将现有 json 的格式编码/更改为另一种格式
- git - 在 Mac 上推送到 Github 每次都会返回错误
- python - Python:从列表中的两个字符串中匹配单词
- python - 从每组的另一列获取对应于 idxmax 的列值