54 lines
734 B
Plaintext
54 lines
734 B
Plaintext
BYTE Func Equals(CHAR ARRAY a,b)
|
|
BYTE i
|
|
|
|
IF a(0)#b(0) THEN
|
|
RETURN (0)
|
|
FI
|
|
|
|
FOR i=1 TO a(0)
|
|
DO
|
|
IF a(i)#b(i) THEN
|
|
RETURN (0)
|
|
FI
|
|
OD
|
|
RETURN (1)
|
|
|
|
PROC Lcs(CHAR ARRAY a,b,res)
|
|
CHAR ARRAY t(100)
|
|
BYTE i,j,len
|
|
|
|
IF a(0)<b(0) THEN
|
|
len=a(0)
|
|
ELSE
|
|
len=b(0)
|
|
FI
|
|
|
|
WHILE len>0
|
|
DO
|
|
FOR i=1 to a(0)-len+1
|
|
DO
|
|
SCopyS(res,a,i,i+len-1)
|
|
FOR j=1 to b(0)-len+1
|
|
DO
|
|
SCopyS(t,b,j,j+len-1)
|
|
IF Equals(res,t) THEN
|
|
RETURN
|
|
FI
|
|
OD
|
|
OD
|
|
len==-1
|
|
OD
|
|
res(0)=0
|
|
RETURN
|
|
|
|
PROC Test(CHAR ARRAY a,b)
|
|
CHAR ARRAY res(100)
|
|
|
|
Lcs(a,b,res)
|
|
PrintF("lcs(""%S"",""%S"")=""%S""%E",a,b,res)
|
|
RETURN
|
|
|
|
PROC Main()
|
|
Test("thisisatest","testing123testing")
|
|
RETURN
|