pascal大神来,急急急

pascalNOIP2005 明明的随机数,不会做,有多处错误。本人联赛新手,请大神指出错误并解释
代码如下
var n,v,c,i,j:integer;
a:array[1..100] of integer;
begin
readln(n);
for i:=1 to n do
read(a [i]);

for i:=1 to 100 do
for j:=1 to 100 do
begin
if a[i]<>a[j] then
begin
n:=n+1;
end;
if a[i]<a[j] then swap(a[i],a[j]);
end;
for i:=1 to 100 do
if a[i]<a[j] then begin write(n);
writeln;
write(a[i]);
end;
end.

9 条评论

  • @ 2016-11-06 18:35:12

    你那个第二段筛选的时候定义如下:
    for i:=1 to 1000 do
    for j:=1 to 1000 do
    ……
    下同。
    但是这个程序过于复杂,由于n<=1000;直接暴力搜索就行了。

    附送桶排序代码

    program mmdsjs;
    var
    b:array[-10..1010]of boolean;
    n,i,s,sum:longint;
    begin
    {assign(input,'mmdsjs.in');
    assign(output,'mmdsjs.out');
    reset(input);
    rewrite(output);}
    readln(n);
    fillchar(b,sizeof(b),false);
    for i:=1 to n do
    begin
    read(s);
    b[s]:=true;
    end;
    sum:=0;
    for i:=-10 to 1010 do if b[i] then sum:=sum+1; writeln(sum);
    for i:=-10 to 1010 do if b[i] then write(i,' ');
    {close(input);
    close(output);}
    end.

  • @ 2016-10-23 16:37:54

    有那么麻烦吗?
    var
    a:array[1..1000] of boolean;
    i,n,x,max:longint;
    begin
    readln(n);
    fillchar(a,sizeof(a),false);
    for i:=1 to n do
    begin
    read(x);
    a[x]:=true;
    end;
    n:=0;
    for i:=1 to 1000 do
    if a[i] then n:=n+1;
    writeln(n);
    for i:=1 to 1000 do
    if a[i] then write(i,' ')
    end.

  • @ 2016-10-20 21:27:50

    你是不是傻。。。
    var a:array[1..1000] of integer;
    n,i,x,s:longint;
    begin
    readln(n);
    fillchar(a,sizeof(a),0);
    for i:=1 to n do
    begin read(x); a[x]:=1; end;
    s:=0;
    for i:=1 to 1000 do
    s:=s+a[i];
    writeln(s);
    for i:=1 to 1000 do
    if a[i]<>0 then write(i,' ');
    writeln;
    end.
    以上代码纯手打Orz,错了不要打我

  • @ 2016-10-19 21:35:23

    或者是会pascal的人不多了

  • @ 2016-10-19 21:35:04

    谁也不愿意回答那么低能的问题

  • @ 2016-10-19 21:34:49

    看来是没人了

  • @ 2016-10-19 21:34:17

    如果有大神愿意教我pascal的,可以加我QQ,在个人信息里面

  • @ 2016-10-19 21:33:46

    有人吗

  • @ 2016-10-19 21:33:40

    有人吗

    • @ 2016-10-23 13:39:00

      额,其实感觉这道题直接桶排序。
      program ex2;
      var a:array[1..100] of integer;
      b:array[1..1000] of integer;
      n,i,s:integer;
      begin
      read(n);
      for i:=1 to 1000 do
      b[i]:=0;
      s:=0;
      for i:=1 to n do
      begin
      read(a[i]);
      b[a[i]]:=b[a[i]]+1;
      if b[a[i]]=1 then s:=s+1;
      end;
      writeln(s);
      for i:=1 to 1000 do
      if b[i]<>0 then write(i,' ');
      writeln;
      end.

  • 1

信息

ID
1316
难度
3
分类
其他 | 排序 点击显示
标签
递交数
9945
已通过
4860
通过率
49%
被复制
29
上传者