[NOIP2006 普及组] 明明的随机数 - 洛谷
set用法
begin() 返回set容器的第一个元素的地址
end() 返回set容器的最后一个元素 **地址 **
clear() 删除set容器中的所有的元素
empty() 判断set容器是否为空
max_size() 返回set容器可能包含的元素最大个数
size() 返回当前set容器中的元素个数
erase(it) 删除迭代器指针it处元素
insert(a) 插入元素
//方法一: 暴力版本
#include <bits/stdc++.h>
using namespace std;
int a[101];
int main () {
int n, sum = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
sort(a + 1, a + 1 + n);//排序
for (int i = 1; i <= n; i++) {
if (a[i] != a[i + 1]) {
sum++;
}
}
cout << sum << endl;
for (int i = 1; i <= n; i++) {
if (a[i] != a[i + 1]) {
cout << a[i] << " ";//去重,边输出边处理
}
}
return 0;
}
//方法二:STL(set)版本
#include <bits/stdc++.h>
using namespace std;
set<int> s;
int main () {
int n;
int num;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> num;
s.insert(num);
}
cout << s.size() << endl;
while (s.empty() == 0) {
cout << *s.begin() << ' ';
s.erase(s.begin());
}
return 0;
}
样例:
输入:
10
20 40 32 67 40 20 89 300 400 15
输出:
8
15 20 32 40 67 89 300 400