Pagini recente » Cod sursa (job #2412719) | Cod sursa (job #1935262) | Cod sursa (job #895604) | Cod sursa (job #2864990) | Cod sursa (job #357476)
Cod sursa(job #357476)
#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std;
int max(int a,int b)
{
if(a>b)
return a;
return b;
}
int main()
{
pair <int,int> a[501][501];
int i,j,n,m;
char s1[501],s2[501];
FILE *f=fopen("subsir.in","r");
fscanf(f,"%s",s1);
fscanf(f,"%s",s2);
fclose(f);
n=strlen(s1);
m=strlen(s2);
for(i=0;i<=n;i++)
for(j=0;j<=m;j++)
a[i][j].second=0;
for(i=0;i<=max(n,m);i++)
a[i][0].first=0;
for(i=0;i<=max(n,m);i++)
a[0][i].first=0;
for(i=1;i<n;i++)
for(j=1;j<m;j++)
{
if(s1[i]==s2[j])
{
a[i][j].first=a[i-1][j-1].first+1;
a[i][j].second+=a[i-1][j-1].second;
if(a[i-1][j].first==a[i][j].first)
a[i][j].second+=a[i-1][j].second;
if(a[i][j-1].first==a[i][j].first)
a[i][j].second+=a[i][j-1].second;
}
else
{
if(a[i][j-1].first>a[i-1][j].first)
{
a[i][j].first=a[i][j-1].first;
a[i][j].second+=a[i][j-1].second;
}
else
{
a[i][j].first=a[i][j-1].first;
a[i][j].second+=a[i-1][j].second;
}
}
}
f=fopen("subsir.out","w");
fprintf(f,"%i\n",a[n-1][m-1].second);
fclose(f);
return 0;
}