OJ明明的随机数

来源:互联网 发布:剑灵不知火舞捏脸数据 编辑:程序博客网 时间:2024/06/03 21:45

1185: 【明明的随机数】

描述

题目描述:

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用 计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然 后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。

输入:

有2行,第1行为1个正整数,表示所生成的随机数的个数: 

第2行有N个用空格隔开的正整数,为所产生的随机数。

输出:

也是2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

样例输入

10
20 40 32 67 40 20 89 300 400 15

样例输出

8

15 20 32 40 67 89 300 400


有一句mmp不知当讲不当讲,没注意行末没有空格,试了三种放法,擦擦擦都WA了

然后呢,三种放法都注意了行末无空格之后全过

mmp   半个多小时没了

这道题可以用set集合,或者创建一个1000大的数组,初始化为0,然后输入的数字为下标,对应数组中的位置的数字+1,然后再遍历如果数组某位置的数字不为0的话就输出

重要的事情说三遍,注意行末的空格,没有,没有,没有,

NO.1

#include<cstdio>#include<cstring>#include<iostream>#include<set>using namespace std;int main(){int n;cin>>n;int t;set<int>num;for(int i=1;i<=n;i++){cin>>t;num.insert(t);}printf("%d\n",num.size());set<int>::iterator it;int len = num.size();for(it = num.begin();it!=num.end();it++,len--)if(len != 1)printf("%d ",*it);else if(len == 1)printf("%d",*it);return 0;}
NO.2

#include<cstdio>#include<cstring>#include<iostream>#include<set>using namespace std;int main(){int n;cin>>n;int a[1005];int t;int cnt=0;memset(a,0,sizeof(a));for(int i=1;i<=n;i++){cin>>t;if(a[t] == 0){a[t] = t;cnt ++;}}printf("%d\n",cnt);for(int i=1;i<=1005;i++){if(a[i] != 0 && cnt!=1){printf("%d ",i);cnt --;}else if(a[i] != 0 && cnt==1)printf("%d",i);}return 0;}
NO.3

#include <iostream>#include <algorithm>using namespace std;int main(){int n;cin>>n;int x,i,j,k,pd=0;int a[101]={0};for(i=1,k=0;i<=n;i++){cin>>x;for(j=0;j<k;j++){if(a[j]==x){pd=1;break;}}if(pd==0){a[k]=x;k++;}else pd=0;}sort(a,a+k);cout<<k<<endl;for(i=0;i<k;i++){cout<<a[i];if(i!=k-1)cout<<' ';}//system("pause");return 0;}