捞and问
  • 板块灌水区
  • 楼主Konnyaku_q
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/5/22 22:10
  • 上次更新2023/10/23 14:59:05
查看原帖
捞and问
512587
Konnyaku_q楼主2023/5/22 22:10

https://www.luogu.com.cn/discuss/610654

改后为啥只能在C++上运行

#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#include<cmath>
#include<queue>
#include<algorithm>
using namespace std;
long long kmp[10002110000],j=0;
string a,b;
int main()
{
	int lena=a.length() ,lenb=b.length() ;
	cin>>a>>b;
	for(int i=1;i<lenb;i++)
	{
		while(j>0&&b[i]!=b[j])
		{
			j=kmp[j-1];
		}
		if(b[i]==b[j])
		{
			j++;
		}
		kmp[i]=j;
	 } 
	 j=0;
	 for(int i=0;i<=lena;i++)
	 {
	 	while(j>0&&a[i]!=b[j])
		{
			j=kmp[j-1];
		}
		if(a[i]==b[j])
		{
			j++;
		}
		if(j==lenb)
		{
			cout<<i-(lenb-1)+1<<endl;
		}
	 }
	 
	 
}

2023/5/22 22:10
加载中...