# include <bits/stdc++.h>
using namespace std;
#define int long long
char s[1010],t[1010];
map<int,int> dp[1010][1010][2];
const int mod = 1e9+7;
signed main (){
int n,m,k;
scanf("%lld%lld%lld",&n,&m,&k);
scanf("%s%s",(s+1),(t+1));
for(int i = 0;i <= n;i++) dp[i][0][0][0] = 1;
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= m;j++)
{
for(int u = 1;u <= k;u++)
{
if(s[i] == t[j])
{
dp[i][j][u][0] += (dp[i-1][j][u][0]+dp[i-1][j][u][1])%mod;
dp[i][j][u][1] += ((dp[i-1][j-1][u-1][0]+dp[i-1][j-1][u-1][1])%mod+dp[i-1][j-1][u][1])%mod;
}
else
{
dp[i][j][u][1] = 0;
dp[i][j][u][0] += (dp[i-1][j][u][0]+dp[i-1][j][u][1])%mod;
}
}
}
}
cout << (dp[n][m][k][0]+dp[n][m][k][1])%mod;
return 0;
}
求教一下各位大佬,上面的代码虽然会爆空间,但是我还是决定写一下,可是却0分,请求各位大佬帮忙找一下问题!谢谢各位