题目(可提交!)
注册账号邀请码:
https://bs.daimayuan.top/?invitor=2833
复制粘贴即可~
填我的哟,这样算我的邀请次数 😃
以下是作者搬运过来的题面:
时空限制
1S / 512M
题目描述
给定 n n n 个人的能力值 a 1 , a 2 , . . . , a n a_1,a_2,...,a_n a1,a2,...,an,从中选出三个人组队参赛,队伍的总能力值为三个人能力值之和,求队伍的最大总能力值。
输入格式
第一行包含一个整数 n n n,表示人数。
第二行包含 n n n 个整数 a 1 , a 2 , . . . , a n a_1,a_2,...,a_n a1,a2,...,an,表示每个人的能力值。
输出格式
输出一个整数,表示队伍总能力值的最大值。
样例
样例输入 #1
5
1 2 3 4 5
样例输出 #1
12
数据规模
对于 100 100% 100 的数据, 3 ≤ n ≤ 100 3≤n≤100 3≤n≤100, 1 ≤ a i ≤ 105 1≤a_i≤105 1≤ai≤105。
题目分析
求一个长度为 n n n 的正整数序列 a 1 , a 2 , . . . , a n a_1,a_2,...,a_n a1,a2,...,an 中最大的三个数的和是多少。
按照题目要求正常模拟即可。
代码历程
选择排序
#include <bits/stdc++.h>
using namespace std;
int n, a[100], b[100];
int main () {
cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
for (int i = 0; i < n; i++) {
int s = 0;
for (int j = 0; j < n - i; j++) s = max(s, a[j]);
b[i] = s;
}
cout << b[0] + b[1] + b[2] << endl;
return 0;
}
调用库中的 sort() 函数进行排序
#include <bits/stdc++.h>
using namespace std;
int n, a[100];
int main () {
cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
sort(a, a + n), printf("%d\n", a[n - 1] + a[n - 2] + a[n - 3]);
return 0;
}
打擂台的方式
#include <bits/stdc++.h>
int n, x, q, w, e;
int main () {
scanf ("%d", &n);
while (n--) {
scanf("%d", &x);
x > e ? (x > w ? (x > q ? (e = w, w = q, q = x) : (e = w, w = x)) : e = x) : 0;
}
printf ("%d\n", q + w + e);
return 0;
}
完结
撒花!!!

1785

被折叠的 条评论
为什么被折叠?



