Pascal问题,高手来看看

【试题描述】将一列数从小到大排序,并输出重复最多的数以及其次数。每个数是都大于等于零且小于2000的整数。【输入描述】两行数据第一行:表示数的个数(n<=1500)第二行... 【试题描述】

将一列数从小到大排序,并输出重复最多的数以及其次数。每个数是都大于等于零且小于2000 的整数。

【输入描述】

两行数据
第一行: 表示数的个数(n<=1500)
第二行: n个用空格隔开的整数。

【输出描述】

三行数据
第一行:重复次数最多的数
第二行:最大重复次数
第三行:从小到大排列好的n个数,每个数之间一个空格隔开。

【输入样例】

8
1 2 4 9 4 6 4 6

【输出样例】

4
3
1 2 4 4 4 6 6 9
程序:
var a:array[0..1500] of integer;
b:array[1..2000] of integer;
max,n,i,j,c,a1,k,t,s:longint;
flag:boolean;

begin
max:=0;
readln(n);
for i:=1 to n do
read(a[i]);
for i:=1 to n do
begin
a1:=a[i];
b[a1]:=b[a1]+1;
end;
for i:=1 to n do
if b[i]>max then max:=i;
writeln(max);
writeln(b[max]);
for i:=1 to n-1 do
begin
k:=i;
for j:=i+1 to n do
if a[j]<a[k] then k:=j;
if k<>i then
begin t:=a[i];a[i]:=a[k];a[k]:=t;end;
end;

s:=0;
for i:=1 to n do
inc(s);
if s=n then write(a[i])
else write(a[i],' ');
writeln;
end.
展开
 我来答
dribllec
2010-07-02 · TA获得超过107个赞
知道答主
回答量:105
采纳率:0%
帮助的人:137万
展开全部
var a:array[0..1500] of integer;
b:array[1..2000] of integer;
max,n,i,j:longint;
begin
max:=0;
readln(n);
for i:=1 to n do read(a[i]);
for i:=1 to n do b[a[i]]:=b[a[i]]+1;
for i:=1 to 2000 do if b[i]>max then max:=i;
writeln(max);
writeln(b[max]);
for i:=1 to 2000 do
for j:=1 to b[i] do write(i,' ');
writeln;
realdn;
end.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Lemon_Workshop
2010-07-01 · TA获得超过187个赞
知道答主
回答量:60
采纳率:0%
帮助的人:96.3万
展开全部
for i:=1 to n do
if b[i]>max then max:=i;
writeln(max);
writeln(b[max]);
改为
for i:=0 to 2000 do
if b[i]>max then
begin max:=b[i];maxi:=i;end;
writeln(maxi);
writeln(max);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
963569780
2010-07-03 · TA获得超过698个赞
知道小有建树答主
回答量:318
采纳率:0%
帮助的人:357万
展开全部
简单的排序和检索,还要问吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式