为什么我把第 27 行的判断条件放到第 26 行的 l<i&&l<j 之后样例的结果就变了??
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
int n,m,k;
char a[10000000],b[10000000];
int mod=1000000007;
int dp[510][51][51];
int sum[510][51][51];
signed main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=m;i++){
cin>>b[i];
}
for(int i=1;i<=n;i++){
sum[i-1][0][0]=1;
for(int j=1;j<=i;j++){
if(j<=m){
for(int kk=1;kk<=j;kk++){
if(kk<=k){
for(int l=0;l<i&&l<j;l++){//26行
if(a[i-l]==b[j-l]){//27行
dp[i][j][kk]+=sum[i-l-1][j-l-1][kk-1];
dp[i][j][kk]%=mod;
}
}
sum[i][j][kk]=sum[i-1][j][kk]+dp[i][j][kk];
sum[i][j][kk]%=mod;
}
}
}
}
}
cout<<sum[n][m][k];
return 0;
}