KMP模板

来源:互联网 发布:淘宝上的拔步床能买吗 编辑:程序博客网 时间:2024/05/22 03:53




fail[i]=k表示B[0,k]=B[i-k,i];

void KMP(int B[],int m) {fail[0] = -1;for (int i = 1 , j = -1; i < m ; i ++) {while (j >= 0 && B[j+1] != B[i]) j = fail[j];if (B[j+1] == B[i]) j ++;fail[i] = j;}}bool match(int A[],int B[],int n,int m) {for (int i = 0 , j = 0 ; i < n ; i ++) {while (j > 0 && B[j] != A[i]) j = fail[j-1] + 1;if (B[j] == A[i]) j ++;if (j == m) return true;}return false;}


0 0
原创粉丝点击