[P1059 [NOIP2006 普及组] 明明的随机数 - 洛谷 排序

79 阅读1分钟

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就把下标输出就可以了

image.png

#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;
}