Untitled

mail@pastecode.io avatar
unknown
c_cpp
a year ago
829 B
8
Indexable
int nxt(string& p, vector<int>& nbor, int lider, char c) {
    // vamos tentar avancar o lider alimentando o caractere c
    // no automato

    // enquanto lider nao for o inicial
    while(lider != -1) {
        // se o lider tem o caractere c, avanca ele

        // caso contrario, a thread morre e vc tem que olhar o vizinho do lider
    }
    // se todo mundo morreu e o lider eh -1, o que acontece?
}
vector<int> kmp(string p) {
    int n = p.size(); vector<int> nbor(p.size()); // nbor[i] retorna
    // a primeira thread de i pra esquerda que ta viva

    nbor[0] = -1; // -1 eh a thread inicial sem
    // matching algum

    for(int i = 1; i < n; i++) {
        // quem eh o vizinho do i antes de processar o caractere p[i]?
        nbor[i] = // ?
        nbor[i] = nxt(p, nbor, nbor[i], p[i]);
    }
    return nbor
}