Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
45879 | xujindong | 【模拟赛3】JF 和 HJJ 是什么关系 | C++ | 通过 | 100 | 59 MS | 3192 KB | 567 | 2022-02-25 12:51:52 |
#include <bits/stdc++.h> using namespace std; char a[10000000],b[10000000]; int p[11000000]; int main() { scanf("%s%s",a+1,b+1); int i,j=0; p[1]=0; int n=strlen(a+1),m=strlen(b+1); for(int i=1; i<m; ++i) { while(j>0&&b[j+1]!=b[i+1])j=p[j]; if(b[i+1]==b[j+1])j++; p[i+1]=j; } j=0; for(i=0; i<n; ++i) { while(j>0&&b[j+1]!=a[i+1])j=p[j]; if(b[j+1]==a[i+1])++j; if(j==m) { printf("%d\n",i+1-strlen(b+1)+1); j=p[j]; } } for(int i=1; i<=m; ++i)printf("%d ",p[i]); return 0; }