Pagini recente » Cod sursa (job #2772336) | Cod sursa (job #2330994) | Cod sursa (job #192588) | Cod sursa (job #1656228) | Cod sursa (job #245028)
Cod sursa(job #245028)
#include<iostream.h>
#include<string.h>
#include<fstream.h>
char a[100],b[100];
int n,m ;
int lung[100][100];
void construire(char a[100],char b[100],int &l)
{ int i,j;
n=strlen(a)-1;
m=strlen(b)-1;
if (a[0]==b[0])
lung[0][0]=1;
else
lung[0][0]=0;
for (i=0;i<=n-1;i++)
if (a[i]==b[0])
lung[i][0]=1;
else lung[i][0]=lung[i-1][0];
for (j=1;j<=m-1;j++)
if (a[0]==b[j])
lung[0][j]=1;
else
lung[0][j]=lung[0][j-1];
int max;
for (i=1;i<=n-1;i++)
for (j=1;j<=m-1;j++)
{if (a[i]==b[j])
max=lung[i-1][j-1]+1;
else max=0;
if (max<lung[i-1][j])
max=lung[i-1][j];
if (max<lung[i][j-1])
max=lung[i][j-1];
lung[i][j]=max;
}
cout<<"subsirul comun maxim are lungimea "<<
l=lung[n-1][m-1];
cout<<endl;
cout<<"subsirul este:";
i=n-1;
j=m-1;
while (i>=0 && j>=0)
{ if (a[i]==b[j])
{cout<<a[i];
i--;j--;
}
else
if (i-1>=0 && lung[i][j]==lung[i-1][j] )
i--;
else j--;
}
}
void main()
{
cin.get(a,100);
cin.get();
cin.get(b,100);
cin.get();
construire(a,b);
construire(a,b,l)
}