Pagini recente » Cod sursa (job #2491276) | Cod sursa (job #2287294) | Cod sursa (job #1830427) | Cod sursa (job #2648645) | Cod sursa (job #287428)
Cod sursa(job #287428)
#include<fstream.h>
#include<string.h>
ifstream intrare("subsir.in");
ofstream iesire("subsir.out");
char a[501],b[501];
int m[501][501];
long int val[501][501];
int n1,n2;
void citeste()
{
intrare>>a>>b;
n1=strlen(a);
n2=strlen(b);
}
int minim(int i,int j)
{
if(i>j)return j;
return i;
}
int maxim(int i,int j)
{
if(i>j)return i;
return j;
}
int main()
{
citeste();
int i,j,grad;
for(i=0;i<n1;i++)
{
for(j=0;j<n2;j++)
{
if(a[i]==b[j])
{
m[i][j]=minim(m[i][j-1],m[i-1][j])+1;
if(m[i][j]==1)val[i][j]=1;
if(m[i][j]>m[i-1][j]&&m[i-1][j]==m[i][j-1])
{
iesire<<a[i]<<" ";
}
else iesire<<"x ";
}
else
{
m[i][j]=maxim(m[i][j-1],m[i-1][j]);
iesire<<m[i][j]<<" ";
}
//if(m[i][j]==1)val[i][j]=1;
if(val[i][j]==0)
{
if(m[i-1][j-1]<m[i][j]&&m[i][j]==m[i-1][j]&&m[i][j]==m[i][j-1])
{
val[i][j]=val[i][j-1]+val[i-1][j];
}
else
{
val[i][j]=maxim(val[i][j-1],val[i-1][j]);
}
}
}
iesire<<"\n";
}
iesire<<val[n1-1][n2-1]<<"\n";
for(i=0;i<n1;i++)
{
for(j=0;j<n2;j++)
{
iesire<<val[i][j]<<" ";
}
iesire<<"\n";
}
return 0;
}