Cod sursa(job #3236887)

Utilizator DomnulMilandruMilandru Nicon-David DomnulMilandru Data 3 iulie 2024 14:10:44
Problema Subsir Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb

#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;
}