Untitled
unknown
c_cpp
a year ago
829 B
8
Indexable
Never
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 }