Pagini recente » Cod sursa (job #1649326) | Cod sursa (job #1435305) | Cod sursa (job #306595) | Cod sursa (job #1637520) | Cod sursa (job #2125429)
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
char v[501],w[502];
int a[501][501],d[501][501],f[30];
int main()
{
FILE *fin=fopen ("subsir.in","r");
FILE *fout=fopen ("subsir.out","w");
int n,m,i,j;
fscanf (fin,"%s\n%s",v+1,w+1);
n=0;
for (i=1;v[i]!=0;i++)
n++;
m=0;
for (i=1;w[i]!=0;i++)
m++;
for (i=1;i<=n;i++)
f[v[i]-'a']=1;
for (i=1;i<=n;i++){
for (j=1;j<=m;j++){
//if (i==2 && j==2)
// printf ("%d",a[i][j]);
if (v[i]==w[j]){
d[i][j]=1+d[i-1][j-1];
if (d[i][j]>1)
a[i][j]=a[i-1][j-1];
else a[i][j]=1;
}
else {
d[i][j]=max(d[i-1][j],d[i][j-1]);
if (d[i-1][j]>d[i][j-1])
a[i][j]=a[i-1][j];
else if (d[i-1][j]<d[i][j-1])
a[i][j]=a[i][j-1];
else a[i][j]=a[i][j-1]+a[i-1][j];
}
}
}
fprintf (fout,"%d",a[n][m]);
return 0;
}