【杭电oj】1251-统计难题

题目链接

题意很简单。第一遍做是用的爆搜,然后超时了。
其实这个题的思路是很有意思的,在读取单词表的时候用一个map将每个单词的所有的前缀都存起来,查询的时候直接访问键值就可以了。

str.substr(pos,i)的意思就是从pos位置开始的长度为i的子串。

AC代码:

#include 
#include 
using namespace std;

int main(void){
    map<string,int > m;
    string str;
    m.clear();
    while(getline(cin,str)){
        if(str.size() == 0) break;
        for(int i=0;i<=str.size();i++){
            m[str.substr(0,i)]++;
        }
    }
    while(cin>>str)
        cout<return 0;
} 

你可能感兴趣的:(STL容器)