知者何南 发表于 2026-2-10 09:58:30

AcWing-KMP

https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9kaXJlY3QvNGNjZmI3MGI2YjQ2NGYyNDk4OTYzNzBmZGJmY2NlYjgucG5n
这里只能死记硬背了,Next数组的获取过程是p和p本身比力,kmp算法是s和p比力,然后两个for内里的代码都很相似,根本就是死记硬背也题目不大,这里下标是从1开始盘算。我的别的一篇文章讲的是从0开始盘算,根本都差不多,可以类比学习---------------------------->KMP算法解说
#include<iostream>
using namespace std;
#define LEN 1000086
int n,m,ne;
char p,s;
int main(){
    cin>>n>>p+1>>m>>s+1;
    for(int i=2,j=0;i<=n;++i){
      while(j&&p!=p) j=ne;
      if(p==p) ++j;
      ne=j;
    }
    for(int i=1,j=0;i<=m;++i){
      while(j&&s!=p) j=ne;
      if(s==p) ++j;
      if(j==n){
            cout << i-n<<' ';
            j=ne;
      }
    }
    return 0;
}

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金
页: [1]
查看完整版本: AcWing-KMP