Ocena użytkownikóww: ***** / 6
Nadesłany przez Rafał Świetlicki, 18 stycznia 2007 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
podtekst.cpp:
//Najdluzsze wspolne podslowo
//www.algorytm.org
//(c)2007 Rafal Swietlicki
#include <cstdio>
using namespace std;
int len(char* tekst)
{
char *w=tekst;
int dl=0;
while(*w)
{
w++;
dl++;
}
return dl;
}
int main()
{
char s1[30],s2[30];
printf("Podaj pierwszy ciag\n");
scanf("%s",s1);
printf("Podaj drugi ciag\n");
scanf("%s",s2);
int m=len(s1),n=len(s2),maxi=0,ind=0;
int t[30][30];
for(int i=0;i<30;i++)
t[0][i]=t[i][0]=0;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
if(s1[i-1]!=s2[j-1]) t[i][j]=0;
else
{
t[i][j]=t[i-1][j-1]+1;
if(t[i][j]>maxi)
{
maxi=t[i][j];
ind=i;
}
}
printf("%d\n",maxi);
if (maxi!=0)
{
printf("Jest to: ");
for (int i=0; i<maxi; i++)
printf("%c", s1[ind+i-maxi]);
}
return 0;
}