?? bm.~pas
字號:
unit BM;
//字符串匹配BM算法
interface
procedure BM_Input();
procedure BM_Dist();
procedure BM_Action();
implementation
uses SysUtils,StrUtils;
//正文,模式及距離變量
Var p,t:String;dist:Array[0..127] of integer;
procedure BM_Input();
Begin//輸入正文及模式
Writeln('請輸入字符串正文:');
readln(t);
Writeln('請輸入字符串模式:');
readln(p);
End;
procedure BM_Dist();
//距離子程序
Var j,c,m:integer;
Begin
m:=Length(p);//正文長度
for c:=0 to 127 do//詞典為128個字符
dist[c]:=m;
for j:=m-1 downto 1 do
if dist[Integer(p[j])]=m then dist[Integer(p[j])]:=m-j;
End;
procedure BM_Action();
//字符串BM算法子程序
Var i,m,j,k,n:integer;c:char;
Begin
m:=Length(p);
n:=Length(t);
i:=m;
repeat
j:=m;k:=i;
while (j>0) and (p[j]=t[k]) do
begin
j:=j-1;k:=k-1;
end;//while
if j=0 then
begin
writeln('字符串開始位置在:',i-m+1);
writeln('按任意鍵繼續...');readln(c);i:=i+1;
end//if
else i:=i+dist[Integer(t[i])];
until i>n;
writeln('匹配完成,按任意鍵結束...');readln(c);
End;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -