Cod sursa(job #172073)

Utilizator andreisfrentSfrent Andrei andreisfrent Data 5 aprilie 2008 18:34:37
Problema Prefix Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#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;
}