hdu 1247 Hat’s Words(从给的单词中找hat's word 并按字典序输出)

来源:互联网 发布:有关健身的软件 编辑:程序博客网 时间:2024/05/22 17:00

1.在使用mp[key]的时候它会去找键值为key的项,如果没有,他会自动添加一个key的项,再把value赋值为相应的初始值(value是int的话赋值为0,string的话赋值为空)。所以如果是插入的话可以用insert,如果是查找的话可以使用find,这样可以节省开销。查找的时间复杂度为O(logn)


2.

代码:

#include<iostream>#include<string>#include<map>using namespace std;string word[50005];map<string,int> mp;//用平衡二叉树实现的,按key从小到大排int main(){    int i=0;    //printf("%d\n",k.max_size());用来看容器的容量    while(cin>>word[i++])//用ctrl+z然后enter结束循环    {        mp[word[i-1]]=1;//mp[]中的[]已重载,注意是i-1啊啊!!!!!!    }    map<string,int>::iterator it;    for(it=mp.begin(); it!=mp.end(); it++)    {        string w=it->first;        for(i=1; i<w.length()-1; i++)        {            string w1(w,0,i);//复制[0,i)            string w2(w,i);//从w的i位置开始复制            if(mp.find(w1)!=mp.end()&&mp.find(w2)!=mp.end())            {                cout<<w<<endl;                break;            }        }    }    return 0;}


0 0