Untitled
unknown
plain_text
a year ago
1.2 kB
6
Indexable
#include <bits/stdc++.h>
#define F first
#define S second
#define el cout << '\n'
#define maxn 101
#define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(0);
#define For(i,a,b) for ( int i = a; i <= b; i++)
#define MOD 1000000007
using namespace std;
string s, acquy, thienthan;
int f[maxn][maxn], g[maxn][maxn];
int main()
{
faster
cin >> s >> acquy >> thienthan;
int n = acquy.size(); int m = s.size();
for(int i = 0; i < n; i++)
{
int dem1 = 0, dem2 = 0;
if (acquy[i] == s[0]) dem1++;
if (thienthan[i] == s[0]) dem2++;
f[i][0] = dem1; g[i][0] = dem2;
}
for(int k = 1; k < m; k++)
{
for(int i = 0; i < n; i++)
{
if (acquy[i] == s[k])
{
f[i][k] = (f[i][k] + g[i - 1][k - 1]) % MOD;
} else f[i][k] = (f[i - 1][k]) % MOD;
if (thienthan[i] == s[k])
{
g[i][k] = (g[i][k] + f[i - 1][k - 1]) % MOD;
} else g[i][k] = (g[i - 1][k]) % MOD;
}
}
int res = (f[n - 1][m - 1] + g[n - 1][m - 1]) % MOD;
cout << res;
}
Editor is loading...
Leave a Comment