主题:找公串(答对30分)
LSQ
[专家分:220] 发布于 2006-01-21 21:08:00
求N个字符串(N<20,串长<255)中最长的公共子串.如果最长的公共子串不止一个,只输出最先找到的那一个.
回复列表 (共3个回复)
沙发
moz [专家分:37620] 发布于 2006-01-21 22:12:00
这个有点难度,嘿嘿.
定义字符串数组来想想先.
板凳
moz [专家分:37620] 发布于 2006-01-21 23:09:00
n=20
dim s$(n)
for i=1 to n
read s$(i)
if len(s$(i))<len(s$(0)) or s$(0)="" then s$(0)=s$(i)
next
data ".,.,.,.,."....
L=len(s$(0))
for i=L to 1 step -1
for j=1 to (L-i+1)
if k>n then exit for
s1$=mid$(s$(0),j,i)
for k=1 to n
if instr(s$(k),s1$)=0 then exit for
next k,j,i
if k>n then print s1$;
好了,终于完成了,
但至于怎样优化速度嘛,暂时还想不到好的办法。
3 楼
小BASIC [专家分:10] 发布于 2008-06-14 22:28:00
input n
L=LEN(N)
FOR I=1 TO N PRINT "NO.";I;
INPUT A$(I)
NEXT
L=LEN(A$(1))
FOR J=L TO 1 STEP -1
FOR I=1 TO L+1-J
SUB$=MID$(A$(1),I,J)
F=-1
FOR K=2 TO N
IF INSTR(A$(K),SUB$)=0 THEN F=0:EXIT FOR
NEXT K
IF F=-1 THEN PRINT SUB$:END
NEXT I
NEXT J
IF F=0 THEN PRINT "MOT FIND"
END
附:请将最短字符串第一个输入,否则出错正常
我来回复