子串
#include<iostream> #include<cstdio> #include<queue> #include<algorithm> #include<vector> #include<cmath> #include<cstring> #include<ctime> using namespace std; const long long P=1000000007; long long f[201][201]={1},sum[201][201]; long long n,m,K; char a[1010],b[210]; int main() { cin>>n>>m>>K; cin>>a>>b; for(int i=1;i<=n;i++) for(int j=m;j>=1;j--) for(int k=K;k>=1;k--) { if(a[i-1]==b[j-1]) sum[j][k]=(sum[j-1][k]+f[j-1][k-1])%P; else sum[j][k]=0; f[j][k]=(f[j][k]+sum[j][k])%P; } cout<<f[m][K]; return 0; }