Pagini recente » Cod sursa (job #3265229) | Cod sursa (job #2090607) | Cod sursa (job #2157266) | Cod sursa (job #2572834) | Cod sursa (job #1153050)
#include<fstream>
#include<string>
using namespace std;
ifstream fin("kmp.in");
ofstream fout("kmp.out");
string p, t;
int m, i, k, v[100], n;
int main(){
getline(fin, p);
getline(fin, t);
p.insert(0, " ");
t.insert(0, " ");
n = t.length() - 1;
m = p.length() - 1;
for (i = 2; i <= m; i++){
while (k > 0 and p[k + 1] != p[i])
k = v[k];
if (p[k + 1] == p[i]){
k++;
v[i] = k;
}
}
// for (i = 1; i <= m; i++)
// fout << v[i] << " ";
i = 0; pm = 0;
while (pm + i <= n){
if (p[i] == t[pm + i]){
if (i == m)
return pm;
i++;
}