zoukankan      html  css  js  c++  java
  • HDU 1381 Crazy Search

     题目出处 http://acm.hdu.edu.cn/showproblem.php?pid=1381

    此题典型的键值对计数,使用Map容器即可。

    map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。

    STL的map的底层实现是红黑树,STL的红黑树实现中维护了一个node_count之类的簿记变量,用以计算节点数。

     1 #include <iostream>
     2 #include <map>
     3 #include <string>
     4 using namespace std;
     5 map<string, int> MC;
     6 int main()
     7 {
     8     int T,N, NC;
     9     string test;
    10     cin>>T;
    11     while( T--)
    12     {
    13         cin>>N>>NC>>test;
    14         MC.clear();
    15         const int length = test.size(); // 记录输入字符串长度 
    16         for(int i=0;i<length-N+1;i++)
    17         {
    18                 string tmp(test,i,N);   //截取子串
    19                 if(MC.count(tmp)==0) ++MC[tmp];   //将key(tmp)所对应的值增加计数
    20         }
    21         cout<<MC.size()<<endl;  // 输出map中不重复的键的个数,也就是map的size
    22     }
    23     return 0;
    24 }
  • 相关阅读:
    Annotation
    bulid tools
    Git&Version Control
    uri&url
    HTTP &RFC
    git创建新分支
    git忽略提交文件
    redis集群搭建
    java中的线程安全是什么:
    Spring事务传播机制与隔离级别
  • 原文地址:https://www.cnblogs.com/double-win/p/3613824.html
Copyright © 2011-2022 走看看