Kod: Zaznacz cały
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
int max(int a, int b)
{ if (a>b)
{ return a; } else
{ return b; }
}
int main(int argc, char *argv[2])
{
char* t="abaabbaaa";
char* s="babab";
int i,j,n=strlen(t),m=strlen(s);
int d[n][m];
for(i=0; i<n; i++)
{ d[i][0]=0; }
for(j=0; j<m; j++)
{ d[0][j]=0; }
for(i=1; i<n; i++)
{
for(j=1; j<m; j++)
{
if(t[i]==s[j])
{ d[i][j]=d[i-1][j-1]+1; }
else { d[i][j]=max(d[i-1][j],d[i][j-1]); }
}
}
int p[100];
int c=0;
i=n;
j=m;
while(i>0 && j>0)
{
if(t[i]==s[j])
{
p[c]=t[i];
i--;
j--;
c++;
} else
{
if (d[i-1][j]>d[i][j-1])
{ i--; }
else
{ j--; }
}
}
for(i=0; i<5; i++)
{ printf("%c", p[i]); }
printf("
");
system("pause");
return 0;
}