|
|
вернуться в форумПомогите!!!Лимит времени(= Что здесь поменять чтоб количество циклов было меньше... var n,x,i,j,t:integer; a,b:array[1..250000]of char; tempchar,ch:char; label fin,step; begin readln(n); x:=-1; for i:=1 to n do read(a[i]); readln; for i:=1 to n do read(b[i]); readln; i:=1; while i<=n do begin j:=1; while j<=n do begin if j=1 then begin tempchar:=a[1]; a[1]:=a[n]; end else begin ch:=a[j]; a[j]:=tempchar; tempchar:=ch; end; j:=j+1; end; for t:=1 to n do if a[t]=b[t] then x:=i else begin x:=-1;goto step; end; if i=n then x:=0; goto fin; step:i:=i+1; end; fin:write(x); end. Re: Помогите!!!Лимит времени(= Your realisation is 'naive', takes in worst case O(N^2) operations. for 250000 it's about 62,5 billions iterations. It will take almost 1 minute on even strong CPU's Use, for example, hash function. Try test with 249999 equal symbols and one another Re: Помогите!!!Лимит времени(= Избежать лемит времени можно написав КМП ;) |
|
|