Pagini recente » Cod sursa (job #319148) | Cod sursa (job #2026022) | Cod sursa (job #2950117) | Cod sursa (job #2278414) | Cod sursa (job #1307438)
#include<fstream>
#include<algorithm>
#include<string>
using namespace std;
int i,j,n,m,rs,dp[505][505];
string a,b,s;
bool match(int x) {
int i=0;
for(i=0;i<m;++i)
if(a[x+i]!=s[i]) return 0;
return 1;
}
int main()
{
ifstream cin("subsir.in");
ofstream cout("subsir.out");
getline(cin,a); n=a.length();
getline(cin,b); m=b.length();
for(i=1;i<=n;++i)
for(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]);
i=n; j=m;
while(i>0 && j>0)
if(a[i-1]==b[j-1]) s+=a[--i],--j;
else if(dp[i-1][j]<dp[i][j-1]) --i; else --j;
for(i=0;i<n;++i)
if(match(i)) ++rs;
cout<<rs<<'\n';
return 0;
}