[2006年NOIP普及组] 明明的随机数
思路:用桶排序..开一个足够大的数组,将输入的数字k放在数组第k个位置,然后标记。循环n次,如果放数的位置已经被标记过,说明输入的数字重复了,去掉。
分析:注意要按从小到大的顺序输出。
代码如下:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int a[1005];
memset(a,0,sizeof(a));//初始化
int k,n,s=0;//s为计数器
cin>>n;//原始数字个数
for(int i=1;i<=n;++i)//去重
{
cin>>k;//输入一个数
if(a[k]!=1)//原来如果没有,则标记
s++;//记录
a[k]=1;//标记
}
cout<<s<<endl;//输出去重后的数字个数
for(int j=0;j<=1000;++j)//按从小到大的顺序输出
if(a[j]==1)
cout<<j<<" ";//输出去重后的数字
return 0;
}
posted @
2022-08-13 11:28
shanyingrui
阅读(
17)
评论()
编辑
收藏
举报