manacher求大神帮忙查错!!妹子我尽力了
pascal吧
全部回复
仅看楼主
level 2
范儿nk 楼主
求最长回文串
Program manacher;
Var
a:Array[1..100]Of char;
p:Array[1..100]Of Longint;
i,n,id,mx,ans:Longint;
Function min(a,b:Longint):Longint;
Begin
If a<b Then min:=b
Else min:=a;
End;
Begin
While not eoln Do Begin
Inc(n);
Read(a[n]);
Inc(n);
a[n]:='#';
End;
a[n]:='$';
//For i:=1 To n Do Write(a[i]);
mx:=1;
Fillchar(p,sizeof(p),0);
For i:=1 To n-1 Do Begin
If mx>i Then p[i]:=min(p[2*id-i],mx-i);
While a[i-p[i]]=a[i+p[i]] Do Inc(p[i]); 在这步的时候报201(数组越界)!!!!
If (p[i]+i>mx) Then Begin
mx:=p[i]+i;
id:=i;
End;
End;
For i:=1 To n Do Write(p[i],' ');
后面我还没写完(写到这步就出错了[乖])
End.
2014年07月22日 09点07分 1
level 12
用TP不会,但要把‘//For i:=1 To n Do Write(a[i]);’删掉
2014年07月22日 09点07分 2
1