求助
  • 板块学术版
  • 楼主_TLJYatm_
  • 当前回复7
  • 已保存回复7
  • 发布时间2021/10/16 21:00
  • 上次更新2023/11/4 03:34:47
查看原帖
求助
45199
_TLJYatm_楼主2021/10/16 21:00
#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
using namespace std;
string s1,s2;
int n,m,kmp[1000005];
int main(){
	getline(cin,s1);
	getline(cin,s2);
	n=s1.size(); m=s2.size();
	kmp[0]=kmp[1]=0;
	int k=0;
	for (int i=1; i<m; i++){
		while (k && s2[i]!=s2[k]) k=kmp[k];
		kmp[i+1]=a2[i]==a2[k]?++k:0;
	}
	k=0;
	for (int i=0; i<n; i++){
		while (k && s1[i]!=s2[k]) k=kmp[k];
		k+=s1[i]==s2[k];
		if (k==m) printf("%d\n",i-m+2);
	}
	for (int i=1; i<=m; i++) printf("%d ",kmp[i]);
}

为什么把getline改成cin就对了啊 P3375

2021/10/16 21:00
加载中...