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  } 

 

 
posted @ 2020-06-17 10:59  TFLSNOI  阅读(295)  评论(0编辑  收藏  举报