实现方法:数组标记 | unique | set| map题目:数字处理题目描述
给出一个含有 n 个整数的序列,请你输出它们的总和、最大值、最小值、并大到小输出(去重后)。
输入
第—个整数n (1<n≤
) 第二行n个整数ai (1≤ai≤
)。
输出
第一行输出一个整数,表示总和。 第二行输出一个整数,表示最大值。 第三行输出一个整数,表示最小值。 第四行输出若干个空格分隔的整数,表示从大到小排序后的序列(相同的数只输出一次)。
样例输入
8
8 5 1 9 2 6 2 6
样例输出
39
9
1
9 8 6 5 2 1
【标程1】: 数组标记或用循环
#include<bits/stdc++.h>
usingnamespacestd;
constint N = 1e4 + 5;
int a[N],n,sum;
int vis[N]; // 标记数组
int main(){
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i];
sum += a[i];
}
//排序
sort(a+1,a+1+n);
//输出
cout << sum << '\n';
cout << a[n] << '\n';
cout << a[1] << '\n';
for(int i = n; i >= 1; i--){
if(!vis[a[i]]){
cout << a[i] << " ";
vis[a[i]] = 1;
}
}
return0;
}
【标程2】:unique函数
#include<bits/stdc++.h>
usingnamespacestd;
constint N = 1e4 + 5;
int a[N],n,sum;
int main(){
cin >> n;
for(int i = 0; i < n; i++){
cin >> a[i];
sum += a[i];
}
//排序
sort(a,a+n);
//输出
cout << sum << '\n';
cout << a[n-1] << '\n';
cout << a[0] << '\n';
// unique去重
int pos = unique(a,a+n) - a;
for(int i = pos-1; i >= 0; i--){
cout << a[i] << " ";
}
return0;
}
【标程3】:set大到小
#include<bits/stdc++.h>
usingnamespacestd;
set<int, greater<int>> st;
int main() {
int n, sum = 0, x;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> x;
sum += x;
st.insert(x);
}
cout << sum << '\n';
// set<int>::iterator it = st.begin();
auto it = st.begin();
cout << *it << "\n"; // 输出最大值
it = --st.end(); // 正确获取指向最小值的迭代器
cout << *it << "\n";
for (it = st.begin(); it!= st.end(); ++it) {
cout << *it << " ";
}
// for(auto it : st){
// cout << it << " ";
// }
return0;
}
【标程4】:set小到大
#include<bits/stdc++.h>
usingnamespacestd;
set<int> st;
int main() {
int n, sum = 0, x;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> x;
sum += x;
st.insert(x);
}
cout << sum << '\n';
auto it = --st.end();
cout << *it << "\n"; // 输出最大值
it = st.begin(); // 正确获取指向最小值的迭代器
cout << *it << "\n";
for (it = --st.end(); it!= --st.begin(); --it) {
cout << *it << " ";
}
return0;
}
【标程5】:map
#include<bits/stdc++.h>
usingnamespacestd;
int x,n,sum;
map<int,bool,greater<int>>mp;
int main(){
cin >> n;
for(int i = 1; i <= n; i++){
cin >> x;
sum += x;
mp[x]++;
}
//输出
cout << sum << '\n';
auto it = mp.begin();//迭代器
cout << it->first <<'\n';
it = --mp.end();
cout << it->first <<'\n';
for(it = mp.begin(); it != mp.end(); ++it){
cout << it->first << " ";
}
return0;
}
领取专属 10元无门槛券
私享最新 技术干货