读完深进来的,代码片段如下:
int n,m,k;
char a[N],b[M];
int g[2][N][M],f[2][N][M];
int main(){
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>n>>m>>k>>(a+1)>>(b+1);
F(i,0,n) g[0][i][0]=1;
F(c,1,k){
memset(f[c&1],0,sizeof f[c&1]);
memset(g[c&1],0,sizeof g[c&1]);
F(i,1,n){
F(j,1,m){
if(a[i]==b[j]){
f[c&1][i][j]=(f[c&1][i-1][j-1]+g[(c&1)^1][i-1][j-1])%mod;
}
g[c&1][i][j]=(g[c&1][i-1][j]+f[c&1][i][j])%mod;
}
}
}
cout<<g[k&1][n][m];
return 0;
}
唯一不理解的是初始化的方法,能否解释其含义?或者给出其他可行的初始化方法。