zoukankan      html  css  js  c++  java
  • 洛谷 P1059 明明的随机数

    题目描述

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

    输入输出格式

    输入格式:

     

    输入有两行,第111行为111个正整数,表示所生成的随机数的个数NNN

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

     

    输出格式:

     

    输出也是两行,第111行为111个正整数MMM,表示不相同的随机数的个数。

    222行为MMM个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

    方法同样有很多

    1、调用库函数法

     1 #include<iostream>
     2 #include<algorithm>
     3 using namespace std;
     4 int main(){
     5     int n;
     6     cin>>n;
     7     int a[n];
     8     for(int i=0;i<n;i++){
     9         cin>>a[i];
    10     }
    11     sort(a,a+n);
    12     int m;
    13     m = unique(a,a+n) - a;
    14     cout<<m<<endl;
    15     for(int i=0;i<m;i++){
    16         cout<<a[i]<<" ";
    17     }
    18     return 0;
    19 }
    View Code

    2、巧妙方法

     1 #include<iostream>
     2 using namespace std;
     3 int main(){
     4     int n;
     5     cin>>n;
     6     int a[n];
     7     int b[1001];
     8     for(int i=0;i<1001;i++){
     9         b[i]=0;
    10     }
    11     for(int i=0;i<n;i++){
    12         cin>>a[i];
    13         b[a[i]]++;
    14     }
    15     int count=0;
    16     for(int i=0;i<1001;i++){
    17         if(b[i]!=0) count++;
    18     }
    19     cout<<count<<endl;
    20     for(int i=0;i<1001;i++){
    21         if(b[i]!=0) cout<<i<<" ";
    22     }
    23     return 0;
    24 }
    View Code

    3、最常规的方法,手动排序手动查重

     1 #include<iostream>
     2 using namespace std;
     3 int main(){
     4     int n;
     5     cin>>n;
     6     int a[n],b[n];
     7     for(int i=0;i<n;i++){
     8         cin>>a[i];
     9     }
    10     int temp;
    11     for(int i=0;i<n;i++){
    12         for(int j=i+1;j<n;j++){
    13             if(a[i]>a[j]){
    14                 temp=a[i];a[i]=a[j];a[j]=temp;
    15             }
    16         }
    17     }
    18     
    19     b[0]=a[0];
    20     int k=1;;
    21     for(int i=1;i<n;i++){
    22         if(a[i]!=a[i-1]) {
    23             b[k]=a[i];
    24             k++;
    25         }
    26     }
    27     //k++;
    28     cout<<k<<endl;
    29     for(int i=0;i<k;i++){
    30         cout<<b[i]<<" ";
    31     }
    32     
    33     return 0;
    34 }
    View Code

    请大佬指点

  • 相关阅读:
    网站优化,dns预解析,解析缓存
    dos命名重启或关闭远程服务器
    IIS 常见问题集记录
    EF 基础提供程序在 Open 上失败
    flexbox学习
    svn post-commit 同步
    备份
    log4net 2.0.4有问题,AdoNetAppender会报错
    signalr 配置错误跟踪
    Facebook的Web开发三板斧:React.js、Relay和GraphQL
  • 原文地址:https://www.cnblogs.com/LOW-ctfer/p/9840534.html
Copyright © 2011-2022 走看看