输入n个整数,求其中最大的3个数和。c++
时间: 2024-01-27 12:06:01 浏览: 76
可以使用一个大小为3的最大堆,遍历n个整数,将每个整数与堆顶元素比较,若大于堆顶元素,则将堆顶元素替换成该整数并重新调整堆。最终堆中的三个元素即为最大的三个数。
以下是C++代码实现:
```c++
#include <iostream>
#include <queue>
using namespace std;
int main() {
int n;
cin >> n;
priority_queue<int, vector<int>, greater<int>> pq;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
if (pq.size() < 3) {
pq.push(x);
} else if (x > pq.top()) {
pq.pop();
pq.push(x);
}
}
int sum = 0;
while (!pq.empty()) {
sum += pq.top();
pq.pop();
}
cout << sum << endl;
return 0;
}
```
相关问题
输入n个整数,求其中最大的3个数。c++
可以使用排序算法实现:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n, arr[100];
cin >> n;
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
sort(arr, arr + n);
if (n < 3) { // 数组长度小于3
cout << "输入的整数不足3个" << endl;
return 0;
}
cout << "最大的3个数为:" << arr[n - 1] << " " << arr[n - 2] << " " << arr[n - 3] << endl;
return 0;
}
```
也可以使用选择排序,每次找到最大的数,然后把它放到数组的最后面,直到找到前三个最大的数为止。
```c++
#include <iostream>
using namespace std;
int main() {
int n, arr[100];
cin >> n;
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
if (n < 3) { // 数组长度小于3
cout << "输入的整数不足3个" << endl;
return 0;
}
for (int i = 0; i < 3; i++) {
int max_index = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] > arr[max_index]) {
max_index = j;
}
}
swap(arr[i], arr[max_index]);
}
cout << "最大的3个数为:" << arr[0] << " " << arr[1] << " " << arr[2] << endl;
return 0;
}
```
输入 n个整数,求这 n 个整数的乘积。 输入格式 第一行,输入一个整数 n 第二行,输入 n个整数的C++代码
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int product = 1;
for (int i = 0; i < n; i++) {
int num;
cin >> num;
product *= num;
}
cout << product << endl;
return 0;
}
阅读全文