P1059 明明的随机数
https://www.luogu.com.cn/problem/P1059 洛谷地址
http://ybt.ssoier.cn:8088/problem_show.php?pid=1184 一本通地址
方法一:排序+去重
1 #include<cstdio> 2 #include<iostream> 3 using namespace std; 4 int main () { 5 int n,a[1000],s=0,i,j,t=0; 6 cin>>n; 7 for (i=1; i<=n; i++)//输入数据 8 cin>>a[i]; 9 10 for (j=1; j<=n-1; j++)//冒泡排序 11 for (i=1; i<=n-j; i++) 12 if (a[i]>a[i+1]) { 13 t=a[i]; 14 a[i]=a[i+1]; 15 a[i+1]=t; 16 } 17 18 for (i=1; i<=n; i++)//去除重复的数据 19 if (a[i]==a[i+1]) 20 a[i]=0; 21 22 for (i=1; i<=n; i++)//统计输出个数 23 if (a[i]!=0) 24 s=s+1; 25 cout<<s<<endl; 26 27 for (i=1; i<=n; i++)//输出答案 28 if (a[i]!=0) 29 cout<<a[i]<<" "; 30 return 0; 31 }
方法二:计数排序
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n, x, cnt, f[1005]; 4 int main() 5 { 6 cin>>n; 7 for(int i=0; i<n; i++){ 8 cin>>x;//输入随机数 9 f[x]=1;//标记随机数是否出现 10 } 11 12 for(int i=1; i<=1000; i++)//统计随机数的个数(去重后) 13 if(f[i])cnt++; 14 cout<<cnt<<endl; 15 16 for(int i=1; i<=1000; i++)//计数排序输出 17 if(f[i])cout<<i<<" "; 18 19 return 0; 20 }