Cod sursa(job #795217)

Utilizator taigi100Cazacu Robert taigi100 Data 7 octombrie 2012 20:39:35
Problema Potrivirea sirurilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <stdio.h >
#include <iostream>
#include <string.h>
using namespace std;
int v[1005],cont;
int cautare(char *s,int n ,char *p,int m)
{
	int i,j,k,d[256];

	for ( i=0 ; i < 256 ; i ++)
	d[i]=m;
	for ( j=0 ; j < m-1 ; j++)
		d[p[j]]=m-j-1;
	i=j=m;
	while (i<=n)
	{
		j=m;
		k=i;
		while(j>0 && ( s[k-1]==p[j-1] ) )
		{
			k--;
			j--;
		}
		if(j>0)
			i=i+d[s[k-1]];
		if(j<=0)
		{
			if(cont<=1000)
			{
			v[cont++]=i-m;
			i=i+d[p[m-1]];
			}
			else
				return 0;
		}
	}
	return j==0 ? i-m : -1;
}
int main()
{
	FILE *f=fopen("strmatch.in","r");
	FILE *g=fopen("strmatch.out","w");
	char s[100],p[100];
	int m,n;
	fscanf(f,"%s%s",p,s);
	n=strlen(s);
	m=strlen(p);
	cautare(s,n,p,m);
	fprintf(g,"%d\n",cont);
	for(int i=0 ; i < cont ; i ++)
    fprintf(g,"%d ",v[i]);

}