Pagini recente » Cod sursa (job #22071) | Cod sursa (job #93496) | Cod sursa (job #2971152) | Cod sursa (job #2982406) | Cod sursa (job #3236887)
#include <fstream>
using namespace std;
ifstream cin("subsir.in");
ofstream cout("subsir.out");
string a,b;
int n,m;
int dp[503][503];
int combinatii(int n,int m)
{
if(!n || !m)
return 0;
int s=0;
if(a[n-1]==b[m-1])
s++;
else
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i-1]==b[j-1] && dp[n][m]==dp[i][j])
s=s+combinatii(i-1,j-1);
return s;
}
int main()
{
cin>>a;
cin>>b;
n=a.size();
m=b.size();
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i-1]==b[j-1])
dp[i][j]=dp[i-1][j-1]+1;
else
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
cout<<combinatii(n,m);
return 0;
}