Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

尽量减少每次比较的消耗

Posted by hawk at 2005-05-01 00:08:48 on Problem 1035
In Reply To:这样都要超时?大牛帮忙! Posted by:JiangLY at 2005-05-01 00:02:36
> label 1;
> var
>   d:array[1..10000] of string;
>   s,p:string;
>   i,l:longint;
> function checkdelete(a,b:string):boolean;
> var
>   i:integer;
>   t:string;
> begin
>   checkdelete:=false;
>   for i:=1 to length(a) do
>     begin
>       t:=a;
>       delete(t,i,1);
>       if t=b then
>         begin
>           checkdelete:=true;
>           exit;
>         end;
>     end;
> end;
> function checkinsert(a,b:string):boolean;
> var
>   i:integer;
>   t:string;
> begin
>   checkinsert:=false;
>   for i:=1 to length(b) do
>     begin
>       t:=b;
>       delete(t,i,1);
>       if t=a then
>         begin
>           checkinsert:=true;
>           exit;
>         end;
>     end;
> end;
> function checkreplace(a,b:string):boolean;
> var
>   i,k:integer;
> begin
>   k:=0;
>   for i:=1 to length(a) do
>     if a[i]<>b[i] then inc(k);
>   if k=1 then checkreplace:=true
>          else checkreplace:=false;
> end;
> begin
>   readln(p);
>   l:=0;
>   while p<>'#' do
>     begin
>       inc(l);
>       d[l]:=p;
>       readln(p);
>     end;
>   readln(s);
>   while s<>'#' do
>     begin
>       for i:=1 to l do
>         if d[i]=s then
>           begin
>             writeln(s,' is correct');
>             goto 1;
>           end;
>       write(s,':');
>       for i:=1 to l do
>         if length(d[i])=length(s) then
>           begin
>             if checkreplace(s,d[i]) then write(' ',d[i]);
>           end
>                                   else
>         if length(d[i])=length(s)+1 then
>           begin
>             if checkinsert(s,d[i]) then write(' ',d[i]);
>           end
>                                     else
>         if length(d[i])+1=length(s) then
>           begin
>             if checkdelete(s,d[i]) then write(' ',d[i]);
>           end;
>       writeln;
>       1:
>       readln(s);
>     end;
> end.

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator