Pagini recente » Cod sursa (job #2586055) | Cod sursa (job #250257) | Cod sursa (job #672510) | Cod sursa (job #3232054) | Cod sursa (job #565364)
Cod sursa(job #565364)
#include<fstream.h>
#include<string.h>
#define N 666013
char x[501],y[501];
long i,j,n,m,s[501][501],k=0,l,r,t,nr[501][501]={0},u[250001],v[250001];
int main()
{ifstream f1("subsir.in");
ofstream f2("subsir.out");
f1>>x>>y;
n=strlen(x);
m=strlen(y);
for(i=0;i<=n;i++)
s[i][0]=0;
for(j=0;j<=m;j++)
s[0][j]=0;
for(i=1;i<=n;i++)
{for(j=1;j<=m;j++)
{s[i][j]=0;
if(x[i-1]==y[j-1])
{s[i][j]=s[i-1][j-1]+1;
k++;
u[k]=i;
v[k]=j;}
else
s[i][j]=s[i-1][j-1];
if(s[i][j]<s[i-1][j])
s[i][j]=s[i-1][j];
if(s[i][j]<s[i][j-1])
s[i][j]=s[i][j-1];}}
for(t=1;t<=k;t++)
if(s[u[t]][v[t]]<=2)
nr[u[t]][v[t]]=1;
else
{for(r=2;r<u[t];r++)
{for(l=2;l<v[t];l++)
if(s[r][l]+1==s[u[t]][v[t]])
nr[u[t]][v[t]]=(nr[u[t]][v[t]]+nr[r][l])%N;}}
f2<<nr[n][m];
f1.close();
f2.close();
return 0;}