#1721. 珅泽教育CSP-J第一轮模拟考第七套 第 25 题
珅泽教育CSP-J第一轮模拟考第七套 第 25 题
第2题
int a[maxn];
int b[maxn];
int n, m;
const long long mod = 1'000'000'007;
bool filled[maxn][maxn];
long long mem[maxn][maxn];
long long solve(int i, int j)
{
if (i == n) return 1;
if (j == m) return 1;
if (filled[i][j])
return mem[i][j];
filled[i][j] = true;
long long sum = solve(i+1, j) + solve(i, j+1);
if (a[i] == b[j]) {
return mem[i][j] = sum % mod;
}
else {
return mem[i][j] = (sum - solve(i+1, j+1)) % mod;
}
}
int main()
{
std::cin >> n >> m;
for (int i = 0; i < n; ++i) std::cin >> a[i];
for (int i = 0; i < m; ++i) std::cin >> b[i];
std::cout << (solve(0, 0) + mod) % mod << "\n";
}
如果两个序列完全相同,程序返回的结果是 。
{{ select(1) }}
- 正确
- 错误