原题:https://pintia.cn/problem-sets/15/problems/891
题意:
给出N个文件,文件里面含有各个单词,再给出若干对编号,找出每对编号文件里面共同单词,并且算出它们所占两者总单词数的比例。这个两者总单词数要注意,相同的不用加进去。例如:aaa bbb ccc 和aaa ddd ggg 这俩的总词数是5而不是6
坑点:AAA 和AAA1是共同的 qqqqqqq@abc 是两个: qqqqqqq和abc aa1a不行,必须连续起来才行,麻烦的点还是处理字符串。
用的数据结构:使用string类装进vector,并且打包起来做成结构体数组,还有map表建立关系
形如:
struct list {
vector<string> str;
}list[101];
map<string, bool>mp[101];//下标编号就是文件编号
还有就是最后一个测试点超时的问题。一开始我用map在每次输入一对待搜索的编号,分别遍历两个文件,给单词做标记,这个办法超时了。看了这位大佬黑白灰的猫的提示才明白,可以做一个map数组,编号就是文件的编号,在建立字符串的时候就进行标记,到最后只要遍历一次就行了。值得注意的是必须用两者间较短的那个做遍历,要是随便取来遍历还是会超时- -
再讲讲string类
功能清空: