求助,全wa但是本地调试输出正确
查看原帖
求助,全wa但是本地调试输出正确
156890
fabirim楼主2021/11/16 12:51
#include<iostream>
#include<string>
#include<cstring>
#define MAXN 10000007
using namespace std;
string s, p;
int nxt[10000001];
void next(string a,int *b) {
	int len = a.length();
	int now = 0, i = 1;
	while (i < len) {
		if (a[i] == a[now]) {
			b[i] = b[i - 1] + 1;
			i++;
			now++;
		}
		else if (b[now - 1]) {
			now = b[now - 1];
		}
		else 
			i++;
	}
}
int main() {
	memset(nxt, 0, sizeof(nxt));
	for (char ch = getchar(); ch != '\n' && ch != EOF; ch = getchar()) s.push_back(ch);
	for (char ch = getchar(); ch != '\n' && ch != EOF; ch = getchar()) p.push_back(ch);
	//getline(cin,s);
	//getline(cin,p);
	next(p,nxt);
	int tar = 0, pos = 0;
	while (tar < s.length()) {
		if (s[tar] == p[pos]) {
			tar++; pos++;
		}
		else if (pos)
			pos = nxt[pos - 1];
		else {
			tar++;
		}
		if (pos == p.length()) {
			printf("%d\n", tar - pos + 1);
			pos = nxt[pos - 1];
		}
	}
	for (int i = 0; i < p.length(); i++)
		printf("%d ", nxt[i]);
	return 0;
}

rt,开始觉得可能是getline的问题,于是参考其他大佬的方法更改了读入方式,还是wa

2021/11/16 12:51
加载中...