关注
#include <iostream>
(30316)#include <string>
#include <vector>
(30320)#include <set>
#include <algorithm>
using namespace std;
int main()
{
string a, b;
cin >> a >> b;
//前向DP
vector<vector<int>> dps(b.size() + 1, vector<int>(a.size() + 1, 0));
for (int i = 1; i <= b.size(); ++i)
{
for (int j = 1; j <= a.size(); ++j)
{
dps[i][j] = max(dps[i - 1][j], dps[i][j - 1]);
if (b[i - 1] == a[j - 1]) {
if (dps[i - 1][j - 1] + 1 > dps[i][j])
dps[i][j] = dps[i - 1][j - 1] + 1;
}
}
}
//后向DP
vector<vector<int>> dps2(b.size() + 1, vector<int>(a.size() + 1, 0));
for (int i = 1; i <= b.size(); ++i)
{
for (int j = 1; j <= a.size(); ++j)
{
dps2[i][j] = max(dps2[i - 1][j], dps2[i][j - 1]);
if (b[b.size() - i] == a[a.size() - j]) {
if (dps2[i - 1][j - 1] + 1 > dps2[i][j])
dps2[i][j] = dps2[i - 1][j - 1] + 1;
}
}
}
int maxNums = dps[b.size()][a.size()] + 1;
int res = 0;
//补的位置
for (int i = 0; i <= a.size(); i++)
{
//该位置要能匹配一个b的字符,字符不重复
set<char> store;
for (int j = 0; j < b.size(); j++)
{
if (store.find(b[j]) != store.end()) continue;
int sum = dps[j][i] + dps2[b.size() - j - 1][a.size() - i] + 1;
if (sum == maxNums)
{
store.insert(b[j]);
res += 1;
}
}
}
cout << res;
}
查看原帖
1 评论
相关推荐
07-08 12:45
吉林大学 硬件开发 现在深挖技术还来得及:大厂
我这个地方基本部门组里就我一个 同事要不出差 要不就是另一个地方办公
实习搭子来的第二周就去上海出差了,到现在还没回来
点赞 评论 收藏
分享
有礼貌的干饭人G了:校友直接投就好了,我简历上项目就只有一个原封不动的外卖也进了一家不错的独角兽
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 如果可以,你希望哪个公司来捞你 #
98978次浏览 401人参与
# 如果公司给你放一天假,你会怎么度过? #
16426次浏览 122人参与
# 我的国央企投递进展 #
45890次浏览 285人参与
# 三一重工求职进展汇总 #
14449次浏览 65人参与
# 机械人,你被简历秒挂的企业有哪些? #
42401次浏览 280人参与
# 总结:哪家公司面试体验感最差 #
60572次浏览 273人参与
# 我和mentor的爱恨情仇 #
58129次浏览 350人参与
# 你认为小厂实习有用吗? #
30219次浏览 342人参与
# 哪一瞬间觉得自己长大了 #
14217次浏览 329人参与
# 说说你知道的学历厂 #
60647次浏览 361人参与
# 你找工作的时候用AI吗? #
27175次浏览 330人参与
# 秋招最大的收获是什么? #
36961次浏览 311人参与
# OPPO求职进展汇总 #
662341次浏览 5036人参与
# 面试尴尬现场 #
44675次浏览 286人参与
# 计算机有哪些岗位值得去? #
22404次浏览 202人参与
# 下班后的时间你怎么安排 #
13860次浏览 185人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
245471次浏览 1785人参与
# 材料人,你们签了哪个公司 #
8216次浏览 18人参与
# 找工作时的取与舍 #
80094次浏览 566人参与
# 机械人,说说你的烦心事 #
69240次浏览 838人参与