要求
实现KMP序号编码
代码
#include<iostream>
#include<string>
using namespace std;
const int N = 100;
//带空格
void GetNext(char ch[], int length, int next[])
{
next[1] = 0;
int i = 1, j = 0;
while (i <= length) {
if (j == 0 || ch[i] == ch[j])
next[++i] = ++j;
else j = next[j];
}
}
int main() {
//string T;
int x;
cin >> x;
getchar();
char ch[N];
for (int i = 1; i <= x; i++)
cin >> ch[i];
int next[N];
GetNext(ch, x, next);
for (int i = 1; i <= x; i++) {
cout << next[i] << " ";
}
return 0;
}