都这么大了,you这些怎么能算生词呢,难道三年级以前就有人做蓝题了吗(是我不配)
我觉得这道题出难一点点的话,可以整行读入什么的(口嗨怪)。先看题目,对于每个生词,输出他出现在了哪些文章(需要排序)。看到这里,一些常用STL的大佬应该就会眉开眼笑了 这题能蓝???,当然对于标签中Trie树之类的方法,应该还是有这个难度,这里只讲我的思路
又是字符串,又是排序的,还需要考虑一个文章中重复出现的情况,直接map套set,简单粗暴还不出错,但是时间空间应该没其他算法这么优,我运行了1.8s左右
在读入数据的时候,对于每一个字符串进行一个预处理,把他所在的文章都插入进去,因为是set,去重和排序的问题不需要我们去考虑,最后在遍历时候,注意用set遍历就行了
#include<bits/stdc++.h>
using namespace std;
int n;
map<string,set<int> > a;
string s;
int nn;
int main() {
scanf("%d",&n);
for(register int i=1; i<=n; i++) {
scanf("%d",&nn);
for(register int j=1; j<=nn; j++) {
cin>>s;
a[s].insert(i);
}
}
scanf("%d",&nn);
for(register int i=1; i<=nn; i++) {
cin>>s;
for(set<int>::iterator it=a[s].begin(); it!=a[s].end(); it++) {
cout<<*it<<" ";
}
cout<<endl;
}
return 0;
}