子串

#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;
} 
原文地址:https://www.cnblogs.com/CLGYPYJ/p/6985792.html