题解 | #序列模式匹配#

序列模式匹配

https://www.nowcoder.com/practice/48eb5689ad094fe2a55b6d3d84e72efe

#include <iostream>
#include <string>
#include <vector>
using namespace std;
 
int main()
{
    string text,pattern;
    while(cin >> text >> pattern) {
        int n = text.size(), m = pattern.size();
        vector<vector<int>> dp(n,vector(n,0));
        bool flag = false;
        for(int k = 0; k < n; k++) {
            for(int i = 0; i + k < n; i++) {
                if(text[i + k] == pattern[dp[i][max(i + k - 1, 0)]])
                    dp[i][i + k] = dp[i][max(i + k - 1, 0)] + 1;
                else
                    dp[i][i + k] = dp[i][max(i + k - 1, 0)];
                if(dp[i][i + k] >= m) {//确保k是最小的
                    flag = true;
                    cout << i << " " << i + k << endl;
                }
                if(flag) break;
            }
            if(flag) break;
        }
        if(!flag) cout << "-1 -1" << endl;
    }
    return 0;
}
#牛客创作赏金赛##23届找工作求助阵地#
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 13:47
机械打工仔:你自己匿名可以,这么好的公司就别给它匿名了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务