永发信息网

【基础】去除重复数字 Pascal

答案:4  悬赏:70  手机版
解决时间 2021-04-04 18:25
题目描述
给你N个数(n<=100),每个数都在(0~1000)之间,其中由很多重复的数字,请将重复的数字只保留一个,并将剩下的数由小到大排序并输出。
输入
输入有2行,第1行为1个正整数,表示数的个数:N 第2行有N个用空格隔开的整数。
输出
输出也是2行,第1行为1个正整数M,表示不相同数的个数。第2行为M个用空格隔开的整数,为从小到大排好序的不相同的数。
样例输入
10 20 40 32 67 40 20 89 300 400 15
样例输出
8 15 20 32 40 67 89 300 400
最佳答案
program ygb;
var a[0..1000] of integer; i,n,x:integer;
begin
for i:=0 to 1000 do a[i]:=-1;

read(n);
for i:=1 to n do
begin

read(x);

a[x]:=0;

end;

for i:=0 to 1000 do

if a[i]<>-1 then write(i,' ');

end.

程序不长,能看明白吧。

因为数字范围不大,所以定义了0~1000的数组,先全部赋值为-1表示该项没有数,读数字的时候把对应的数组单元修改为0,表示这个单元输入数字了,最后输出为0的部分。

巧妙的解决了两个问题,一是去处重复,二是排序,都不需要编写具体的代码,自然就是满足要求的结果。
全部回答
var   f:array[0..1000]of boolean;   n,x,i,ans:longint; begin   readln(n);   for i:=1 to n do begin     read(x);     if not f[x] then begin inc(ans);f[x]:=true;end;   end;   writeln(ans);   for i:=0 to 1000 do     if f[i] then write(i,' ');   writeln; end.
因为数字范围在0~1000,所以只需开一个0~1000的布尔数组,数组对应元素为true表示该数字出现过,为false表示没出现过 最后从0~1000扫一遍数组就解决了,超级简单~ 满意望采纳谢谢!~ var     vis:array [0..1000] of boolean;     i,j,k,n,m:longint; begin     fillchar(vis,sizeof(vis),0);//初始化全部数字都没出现过     m:=0;//初始化不重复的数字个数为0     readln(n);         for i:=1 to n do             begin                 read(k);                     if not vis[k] then//如果没出现过                         begin                             inc(m);//不重复的数字个数+1                             vis[k]:=true;//标记为出现过                         end;             end;     writeln(m);         for i:=0 to 1000 do             if vis[i] then break;//找到第一个出现过的数     write(i);//输出第一个出现的数         for j:=i+1 to 1000 do//继续找之后出现的数             if vis[j] then write(' ',j);//这一段的目的是使结尾没有空格,严格按照题目输出条件     writeln; end.
桶排序
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
保证电厂全年安全目标的安全保障措施
正常眼睛观察近处物体最清晰而又不疲劳的距离
朋友买新车搞笑祝福语,恭贺朋友买新车祝福语
京东众包山东也没有开通啊,怎么做
白驹过隙上一句是什么,燕飞什么意思
关于EXO-K伯贤的QQ网名 QQ分组 个性签名 QQ皮
下图为“四地山地植被垂直分布示意图”,甲地
我国三峡工程所提供的水电相当于每年燃烧3000
学完js之后应该学什么呢
At least ten people were injured in the ac
陌陌几天没上,附近的人看不到我,怎么办?
中国科学院遥感所硕士研究牛不牛
“脑袋大,脖子粗,不是大款就伙夫”?
求函数f(x)等于4减x分之一减x(x大于0小于4)的
运维电工是低压还是高压?
推荐资讯
1000元百分之105是多少
中国西部包括哪些省份,中国东中西部地区各有
从阿尔及利亚飞往北京今天早上七点半左右到的
苟字开头的成语有哪些
已知x=0.9+0.99+0.999+…+0.9999999999,求
吃感冒药能喝红牛吗,喝中药可以喝感冒药吗
感情维护的名言警句,关于朋友之间写信保持联
.--- What can I do for?--- I’d like to bu
关于新垣结衣的问题?
耳朵旁边一个心字怎么读
数控伺服电机15n.m是什么意思
手机刚买来的时候没多久,看手机应用太多了,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?