字典树代码全 WA 求调
查看原帖
字典树代码全 WA 求调
1280061
TPJX楼主2024/7/26 19:08

样例全对,不知道是哪里错了

Code:

#include <iostream> 
#include <string>
#include <algorithm>
using namespace std;

int n, l, m, cur;
int nxt[1010][30][30];
bool flag[1010][30];         

void ins(int q, string s) {
	int l = s.size(), p = 0;
	for (int i = 0; i < s.size(); ++i) {
		int c = s[i] - 'a';
		if (!nxt[q][p][c]) nxt[q][p][c] = ++cur;
		p = nxt[q][p][c];
	}
	flag[q][p] = 1;
} 

bool find(int q, string s) {
	int l = s.size(), p = 0;
	for (int i = 0; i < s.size(); ++i) {
		int c = s[i] - 'a';
		if (!nxt[q][p][c]) return 0;
		p = nxt[q][p][c];
	}
	return flag[q][p];
}

int main() {
	cin >> n;
	for (int i = 1; i <= n; ++i) {
		cur = 0;
		cin >> l;
		for (int j = 1; j <= l; ++j) {
			string s;
			cin >> s;
			ins(i, s);
		}
	}
	cin >> m;
	for (int i = 1; i <= m; ++i) {
		string s;
		cin >> s;
		int ans[1010], cur = 0;
		for (int j = 1; j <= n; ++j) 
			if (find(j, s)) ans[++cur] = j;
		for (int j = 1; j <= cur; ++j) {
			if (j < cur) cout << ans[j] << ' ';
			else cout << ans[j];
		}
		cout << endl;
	}
	return 0;
}
2024/7/26 19:08
加载中...