回 帖 发 新 帖 刷新版面

主题:急,高手快教我

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

回复列表 (共3个回复)

沙发

var
  a:array [1..1000] of boolean;
  n,i,m:integer;f:boolean;
begin
  fillchar(a,sizeof(a),false);
  read(n);
  for i:=1 to n do begin
    read(m); a[m]:=true;
  end;
  f:=false;
  for i:=1 to 1000 do
   if a[i] then begin
    if f then write(' ') else f:=true;
    write(i);
  end;
end.

板凳

由于数据量较小,无论怎么排序都不会超时
所以重点就在于去重,
排序完了去重只须在输出是加上IF即可
var
        a:array[1..100] of integer;
        n,i,j,t:integer;
begin
        read(n);
        for i:=1 to n do
                read(a[i]);
        for i:=1 to n do
                for j:=1 to n do
                        if a[i] >a[j] then
                        begin
                                t:=a[i];
                                a[i]:=a[j];
                                a[j]:=t;
                        end;
        write(a[1]);
        for i:=2 to n do
                if a[i]<>a[i-1] then write(a[i],'   ');
end.



[em3][em3][em3][em3][em3][em3][em3][em3][em3][em3]

3 楼

数据小:统排之~~
数据大:qsort之~~

我来回复

您尚未登录,请登录后再回复。点此登录或注册