使用c++红黑树map实现:

Key:单词

Value:所在文档编号集合

读取每篇文档的所有单词,插入到map中,使用map[string]即可得到该字符在哪些文档中。

注意插入时要去重,一篇文章可能有多个相同单词。

#include <iostream>
#include <map>
#include <vector>
using namespace std;

int main() {
    int n,m;
    cin>>n;
    map<string, vector<int>> mp;
    for(int i=1;i<=n;++i){
        int r;
        string s;
        cin>>r;
        while(r--){
            cin>>s;
            if(!mp[s].empty()&&i==mp[s].back()) continue;
            mp[s].push_back(i);
        }
    }
    cin>>m;
    while(m--){
        string s;
        cin>>s;
        vector<int> v = mp[s];
        for(int i=0;i<v.size();++i){
            cout<<v[i];
            if(i!=v.size()-1) cout<<" ";
        }
        cout<<"\n";
    }
}