**XDOJ 288 求一个顺寻串的next函数值。
- 问题描述
**
所设计的程序能够通过编译。并能够实现从输入一个长度为n的顺序串str,并求出顺序串str的next值。
输入格式:
首先输入串的长度n,然后输入顺序串str.
输出格式:
8
a b c a b c b c //注意输入时有空格,输出时也有空格
样例输出:
-1 0 0 0 1 2 3 0
- 代码`
#include <stdio.h>
#include<string.h>
int main()
{
int next[100]={0};
int n,i=0;
char a[100],T[100],p;
scanf("%d\n",&n);
//因为要按格式a b c d d...输入,而空格也被当作一种字符,所以要先设计除去空格
gets(a);
int k=0;
for(i=0;i<2*n-1;i++)
{
if(a[i]!=' '){//除去空格
T[k]=a[i];
k++;
}
}
next[0]=-1;
i=0;int j=-1;
while(i<n)
{
if(j==-1||T[i]==T[j]){
++i;++j;//前移一位,j表示相等前缀码的个数
next[i]=j;
}
else j=next[j];
}
for(int k=0;k<n;k++)
printf("%d ",next[k]);
return 0;
}
`