Pagini recente » Cod sursa (job #2743432) | Cod sursa (job #2554564) | Cod sursa (job #1561591) | Cod sursa (job #2186476) | Cod sursa (job #172073)
Cod sursa(job #172073)
#include <stdio.h>
#include <string.h>
#define maxN 100
char s[maxN];
int p[maxN];
int n;
void rezolva_test()
{
scanf("%s\n", s+1);
n=strlen(s+1);
calcul_prefix();
}
void calcul_prefix()
{
p[1]=0;
int k=0,i;
for(i=2;i<=n;++i)
{
while((k>0) && (s[k+1] != s[i])) k=p[k];
if(s[k+1] == s[i]) ++k;
p[i]=k;
}
}
int main()
{
freopen("prefix.in", "r", stdin);
freopen("prefix.out", "w", stdout);
int nr_teste, cnt;
scanf("%d\n", &nr_teste);
for(cnt = 0; cnt < nr_teste; ++cnt) rezolva_test();
fclose(stdin);
fclose(stdout);
return 0;
}