全WA,样例能过 这是为何,求助大佬!
查看原帖
全WA,样例能过 这是为何,求助大佬!
1061261
lllyyyyyy楼主2024/8/19 14:24
#include <bits/stdc++.h>
using namespace std;

int N, L, M;
int trie[500010][26];
vector<int> cnt[500010]; 
//char s[10010];
string s;
int id = 0;

void insert(int t) {
	cin >> s;
	int p = 0;
	for (int i = 0; i < (int)s.length(); i++) {
		int x = s[i] - 'a';
		if (trie[p][x] == 0) trie[p][x] = ++id;
		p = trie[p][x];
	}
	cnt[p].push_back(t); // 使用push_back向vector添加元素
}

void find(string s) {
	int p = 0;
	int l = s.length();
	for (int i = 0; i < l; i++) {
		int x = s[i] - 'a';
		if (trie[p][x] == 0) {
			break;
		}
		p = trie[p][x];
	}
	sort(cnt[p].begin(), cnt[p].end()); // 排序以按字典序输出
	for (int i : cnt[p]) {
		cout << i << " ";
	}
	cout << endl;
}

int main() {
	cin >> N; // N篇文章
	for (int i = 1; i <= N; i++) {
		cin >> L; // L个单词
		for (int j = 1; j <= L; j++) {
			insert(i); // 在第i篇文章中依次输入L个单词
		}
	}
	cin >> M;
	for (int i = 1; i <= M; i++) {
		cin >> s;
		find(s); // 查找单词
	}
	return 0;
}

2024/8/19 14:24
加载中...