| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
pascal求助啊(HASH)~一直WA。我10w的数据自己搞了个,不会超时。无解/小写也考虑了~~晕倒了啊RT。用的是HASH,特征码为前三位
program p1002;
type node=^datatype;
datatype=record
num,s:integer;
next:node;
end;
var a:array [0..999] of node;
c:char;s:longint;
n,i:integer;
t:node;check:boolean;
procedure push(i,j:integer);
var p,q,t:node;
begin
if (a[i]=nil) or (a[i]^.num>j) then
begin
new(t);t^.num:=j;t^.s:=1;
t^.next:=a[i];a[i]:=t;
end
else
begin
p:=a[i];q:=p^.next;
while (q<>nil) and (q^.num<=j) do
begin p:=q;q:=p^.next; end;
if p^.num=j then inc(p^.s) else
begin
new(t);t^.num:=j;t^.s:=1;p^.next:=t;t^.next:=q;
end;
end;
end;
procedure print(i,j,s:integer);
begin
if i<10 then write('00',i) else
if i<100 then write('0',i) else write(i);
write('-');
if j<10 then write('000',j) else
if j<100 then write('00',j) else
if j<1000 then write('0',j) else write(j);
writeln(' ',s);
end;
begin{main}
assign(input,'1002.in');reset(input);
readln(n);
for i:=0 to 999 do a[i]:=nil;
for i:=1 to n do
begin
s:=0;
while not eoln do
begin
read(c);
case c of
'A','B','C','a','b','c':s:=s*10+2;
'D','E','F','d','e','f':s:=s*10+3;
'G','H','I','g','h','i':s:=s*10+4;
'J','K','L','j','k','l':s:=s*10+5;
'M','N','O','m','n','o':s:=s*10+6;
'P','R','S','p','r','s':s:=s*10+7;
'T','U','V','t','u','v':s:=s*10+8;
'W','X','Y','w','x','y':s:=s*10+9;
'0'..'9':s:=s*10+(ord(c)-ord('0'));
end;
end;
push(s div 10000,s mod 10000);
readln;
end;
close(input);check:=false;
for i:=0 to 999 do
begin
t:=a[i];
while t<>nil do
begin
if t^.s>1 then
begin
print(i,t^.num,t^.s);check:=true;
end;
t:=t^.next;
end;
end;
if not check then writeln('No duplicates.');
end.
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator