@[区区致命伤](/user/181521) 是访问了负下标吗?
by shitbro @ 2020-08-07 18:52:01
当 i=1 时,$a[i-2]$ 是什么?
by 天命之路 @ 2020-08-07 19:06:45
@[天命之路](/user/226435) 草,好像是这样
by 珈乐唯毒 @ 2020-08-07 19:52:18
@[天命之路](/user/226435) 但这样它又不re了,什么鬼?
```
#include<bits/stdc++.h>
using namespace std;
const int mol=1e9+7;
string a,b;
int n,m,k,dp[1005][205][205],l[1005][205];
int main(){
cin>>n>>m>>k;
cin>>a>>b;
dp[0][0][0]=1;
for(int i=1;i<=n;i++){
dp[i][0][0]=1;
for(int j=1;j<=min(i,m);j++){
for(int w=1;w<=min(j,k);w++){
if(a[i-1]==b[j-1]){
dp[i][j][w]=dp[i-1][j-1][w-1];
dp[i][j][w]%=mol;
if(a[i-2]==b[j-2]){
dp[i][j][w]+=dp[i-1][j-1][w]-dp[i-2][j-1][w];
dp[i][j][w]%=mol;
}
}
dp[i][j][w]+=dp[i-1][j][w];
dp[i][j][w]%=mol;
}
}
}
cout<<dp[n][m][k];
return 0;
}
```
by 珈乐唯毒 @ 2020-08-07 19:53:17
@[区区致命伤](/user/181521) 你到底改了哪儿
by 天命之路 @ 2020-08-07 19:55:32
@[天命之路](/user/226435) 在dp数组后加了一个l数组
by 珈乐唯毒 @ 2020-08-07 19:57:15
@[区区致命伤](/user/181521) 我用你那个代码交了一遍,居然MLE了
by 天命之路 @ 2020-08-07 19:59:22
@[区区致命伤](/user/181521) 如果MLE的话 使用滚动数组 因为只跟前$i-1$和$i-2$有关系 所以你建三个 $f[205][205]$的数组就可以了
by shitbro @ 2020-08-07 20:27:18
@[_Daybreak](/user/90972) 我知道要用滚动数组啊。。。纠结的只是为什么会RE嘤嘤嘤嘤
by 珈乐唯毒 @ 2020-08-08 09:02:13