1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
void () { my_pi[1] = 0; int k = 0; for (int q = 2; q <= m; ++q) { while (k && p[k] != p[q - 1]) k = my_pi[k]; if (p[k] == p[q - 1]) k++; my_pi[q] = k; } }
void my_kmp() { int q = 0; for (int i = 1; i <= n; ++i) { while (q && p[q] != t[i - 1]) q = my_pi[q]; if (p[q] == t[i - 1]) q++; if (q == m) { flag = true; printf("%dn", i - m + 1); q = my_pi[q]; } } }
|
近期评论