2295: KMP模式匹配 一(串)
2295: KMP模式匹配 一(串)
时间限制: 1 Sec 内存限制: 128 MB提交: 210 解决: 97
[提交][状态][讨论版][命题人:外部导入]
题目描述
求子串的next值,用next数组存放,全部输出
输入
输入一个字符串
输出
输出所有next值
样例输入
abaabcac
样例输出
0 1 1 2 2 3 1 2
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = 10010;
int len;
void getnext(char s[maxn], int next[maxn])
{
len = strlen(s);
int i = 0, j = -1;
next[0] = -1;
while(i < len)
{
if(j == -1 || s[i] == s[j])
{
i++;
j++;
next[i] = j;
}
else
j = next[j];
}
}
int main()
{
char a[maxn];
int next[maxn];
int i;
cin >> a;
len = strlen(a);
getnext(a, next);
for(i = 0; i < len - 1; ++i)
{
printf("%d ", next[i] + 1);
}
printf("%d", next[i] + 1);
return 0;
}

浙公网安备 33010602011771号