明明的随机数 (去重)
2016-12-26 13:36
337 查看
题目
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。输入
输入多行,先输入随机整数的个数,在输入相应个数的整数输出
返回多行,处理后的结果样例输入
1110
20
40
32
67
40
20
89
300
400
15
样例输出
1015
20
32
40
67
89
300
400
思路
原始办法:总共1000个数,可以采用桶排序的思想。
代码
#include <iostream> #include <vector> using namespace std; #define Max 1000 int main() { int ncount[Max]= {0}; int n,input; //随机整数的个数 cin>>n; for(int i=0; i<n; i++) { cin>>input; ncount[input]=1;//标记 } for (int i=0; i<Max; i++) { if (ncount[i]) { cout<<i<<endl;//输出 } } return 0; }
思路2
利用map,自动实现代码2
#include <iostream> #include <map> using namespace std; int main() { int number,input; map<int,int> m; cin>>number; while(number!=0) { cin>>input; if(m.find(input)==m.end()) { m[input]=1;//插入未出现过的数字 } number--; } for(map<int,int>::iterator iter=m.begin(); iter!=m.end(); ++iter) { cout<<(*iter).first<<endl;//map自动实现排序 } return 0; }