思路:dp,状态转移见代码。
代码:
#include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define mem(a,b) memset(a,b,sizeof(a)) const int N=1e5+5; const int MOD=1e9+7; ll dp[N][11]; int main() { ios::sync_with_stdio(false); cin.tie(0); string s,t; cin>>s>>t; for(int j=0;j<=s.size();j++)dp[j][0]=1; for(int i=1;i<=t.size();i++) { for(int j=1;j<=s.size();j++) { if(s[j-1]==t[i-1])dp[j][i]=(dp[j-1][i]+dp[j-1][i-1])%MOD; else dp[j][i]=dp[j-1][i]; } } cout<<dp[s.size()][t.size()]<<endl; return 0; }