字符串读入求救
  • 板块学术版
  • 楼主夜阑
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/3/19 21:39
  • 上次更新2023/10/28 06:09:52
查看原帖
字符串读入求救
243263
夜阑楼主2022/3/19 21:39

话说我正在自学kmp时

发现输出一直为0

然后我发现我的读入有问题

#include<bits/stdc++.h>
using namespace std;
int p[10010],n,m;
char s[10010],t[10010];
void pre(){
	p[1]=0;
	int j=0;
	for(int i=1;i<m;i++){
		while(j>0&&t[i+1]!=t[j+1])
			j=p[j]; 
		if(t[i+1]==t[j+1])j++;
		p[i+1]=j;
	} 
}
void kmp(){
	int j=0; 
	for(int i=1;i<n;i++){
		while(j>0&&s[i+1]!=t[j+1])j=p[j];
		if(s[i+1]==t[j+1])j++;
		if(j==m)cout<<i-j+1<<endl;
		j=p[j]; 
	}
}
int main(){
	cin>>s+1;
	cin>>t+1;
	n=strlen(s);
	m=strlen(t);
	cout<<s<<' '<<n<<endl;//读入测试
	cout<<t<<' '<<m<<endl;//读入测试
	pre();
	kmp();
	return 0;
}

但是书上表示这么读入没问题可以让char[]字符串下标从1开始

请问大佬哪有问题orz

2022/3/19 21:39
加载中...