主题:急,高手快教我
1l2j3y
[专家分:0] 发布于 2009-07-31 22:31:00
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N《=100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同学生的学号。然后再把这些数从小到大排列,按照排好的顺序去找同学做调查。请你协助明明去完成“去重”与“排序”的工作。
回复列表 (共3个回复)
沙发
小田甜 [专家分:3910] 发布于 2009-08-01 21:57:00
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.
板凳
tzhlryy [专家分:270] 发布于 2009-08-02 17:22:00
由于数据量较小,无论怎么排序都不会超时
所以重点就在于去重,
排序完了去重只须在输出是加上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 楼
abcwuhang [专家分:1840] 发布于 2009-08-20 17:10:00
数据小:统排之~~
数据大:qsort之~~
我来回复