zoukankan      html  css  js  c++  java
  • 洛谷 1059——明明的随机数(排序)

    题目描述

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

    输入输出格式

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

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

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

    输入输出样例

    输入样例#1:
    10
    20 40 32 67 40 20 89 300 400 15
    输出样例#1:
    8
    15 20 32 40 67 89 300 400


    这题不用快排只用o(n)的空间就可以了
    现将b数组设为0,然后再每次读入一个a判断这个数在b数组b[a]是否为0,如果是0则这个数没有读入过;如果为1,则这个数已经读入过,就不用再读入,就完成了去重的步骤。
    最后从1 到 1000 每一个判断是否b[i]为1,就输出。


    代码如下:

    var  n,m,i,a:longint;
         b:array[0..1000] of longint;
    begin
      readln(n);
      m:=n;
      for i:=1 to n do
        begin
          read(a);
          if b[a]=1 then
            begin
              m:=m-1;
            end
          else b[a]:=1;
        end;
      writeln(m);
      for i:=1 to 1000 do if b[i]=1 then write(i,' ');
    end.
  • 相关阅读:
    HDU 2544 最短路
    HDU 3367 Pseudoforest
    USACO 2001 OPEN
    HDU 3371 Connect the Cities
    HDU 1301 Jungle Roads
    HDU 1879 继续畅通工程
    HDU 1233 还是畅通工程
    HDU 1162 Eddy's picture
    HDU 5745 La Vie en rose
    HDU 5744 Keep On Movin
  • 原文地址:https://www.cnblogs.com/Comfortable/p/8412428.html
Copyright © 2011-2022 走看看