|
沙发
楼主 |
发表于 2018-10-2 17:57:00
|
只看该作者
- #include<iostream>
- #include<cstring>
- #define FOR(i,a,b) for(int i=a;i<=b;i++)
- using namespace std;
- const int INF=1000000007,N=1001,M=201;
- int n,m,k;
- string a,b;
- int main()
- {
- cin>>n>>m>>k>>a>>b;
- int f[n+1][m+1][k+1],s[n+1][m+1][k+1];///谜之开数组。。。不然爆空间。
- memset(f,0,sizeof(f));memset(s,0,sizeof(s));
- s[0][0][0]=1;
- FOR(i,1,n)s[i][0][0]=1;
- FOR(l,1,k)FOR(i,1,n)FOR(j,1,m)
- {
- if(a[i-1]==b[j-1])f[i][j][l]=(f[i-1][j-1][l]+s[i-1][j-1][l-1])%INF;
- else f[i][j][l]=0;
- s[i][j][l]=(f[i][j][l]+s[i-1][j][l])%INF;
- }
- cout<<s[n][m][k]<<endl;
- return 0;
- }
复制代码 |
|