Exemple #1
0
int main()
{
    #ifndef ONLINE_JUDGE
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);
    #endif
    nhap();
    xuli();
    inkq();
    return 0;
}
Exemple #2
0
int kmp(char p[], char t[], int id){
    //printf("%s\n",t);
    int m = strlen(p);
    int n = strlen(t);
    //printf("%d%d",m,n);
    int f[220];
    int i = 0;
    int k;

    f[0] = -1;
    for (i = 1; i < m; i++){
        k = f[i - 1];
        while (k >= 0){
            if (p[k] == p[i - 1])
                break;
            else
                k = f[k];
        }
        f[i] = k + 1;
    }
    i = 0;
    k = 0;
    while (i < n){
        if (k == -1){
            i++;
            k = 0;
        }
        else if (t[i] == p[k]){
            i++;
            k++;
            if (k == m){
                flag = 1;
                //printf("%s\n",b[id]);
                inkq(i-m, m-1, ihead[id], jhead[id], ivector[id], jvector[id]);
                return 0;
            }
        }
        else
            k = f[k];
    }
    return 0;
}