• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

cynchanpin

  • 博客园
  • 联系
  • 订阅
  • 管理

View Post

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

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; }



posted on 2017-07-08 13:33  cynchanpin  阅读(206)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3