P1059 [NOIP2006 普及组] 明明的随机数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
set
这道题适合用set,set可以自动去重和排序
#include<iostream>
#include<set>
using namespace std;
set<int>s;
int a[1010];
int main()
{
int n=0;cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
s.insert(a[i]);
}
cout<<s.size()<<endl;
while(!s.empty())
{
cout<<*s.begin()<<" ";//解引用得到第一个元素
s.erase(s.begin());//删掉第一个元素,begin()自动指向下一个元素
}
return 0;
}
桶排序
这道题也适合用桶排序
只要桶里不为0就把下标输出就可以了
#include<iostream>
#include<set>
using namespace std;
int a[1010];
int main()
{
int n=0;cin>>n;
int key=0,sum=0;
for(int i=0;i<n;i++)
{
cin>>key;
a[key]++;
}
for(int i=0;i<1000;i++)//必须是1000个桶不是n个桶,因为数组开的1000,剩下的通都是0可能都会输出,那么就影响了结果
{
if(a[i]!=0)sum++;
}
cout<<sum<<endl;
for(int i=0;i<1000;i++)
{
if(a[i]!=0)
{
cout<<i<<" ";
}
}cout<<endl;
return 0;
}