zoukankan      html  css  js  c++  java
  • Message Flood

    ~题目链接~

    http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=1500&cid=1183

    std::string字符串大小写转换~http://www.haogongju.net/art/2158882

    ai枫 的博客  http://www.cnblogs.com/luyingfeng/p/3161649.html

    输入

    5 3
    Inkfish
    Henry
    Carp
    Max
    Jericho
    Carp
    Max
    Carp
    0

    结果
    3

    (1).multimap多重映照容器 + std::transform函数

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<map>
    #include<string>
    #include<iostream>
    #include<algorithm>//包括各种数据结构的具体元素检索、替换、逆序等等通用的算法
    
    using namespace std;
    
    int main()
    {
        int n,m;
        string str;
        while(~scanf("%d",&n)&&n!=0)
        {
            map<string,int> Q;
            scanf("%d",&m);
            int k=0;
            for(int i=0; i<n; i++)
            {
                cin>>str;
                transform(str.begin(),str.end(),str.begin(),::tolower);
                /*transform(str.begin(), str.end(), str.begin(), ::tolower); //将大写的都转换成小写
                transform(str.begin(), str.end(), str.begin(), ::toupper); //将小写的都转换成大写
                transform(str.begin(), str.end(), str.begin(), exchange);  //大小写切换*/
                Q.insert(pair<string,int>(str,1));//插入元素
            }
            for(int i=0; i<m; i++)
            {
                cin>>str;
                transform(str.begin(),str.end(),str.begin(),::tolower);
                if(Q.find(str)!=Q.end())//查找键值
                {
                    if(Q[str])
                    {
                        Q[str] = 0;
                        k++;
                    }
                }
    
            }
            printf("%d
    ",n-k);
        }
    }
    

      

    (2).map容器

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<map>
    #include<string>
    #include<iostream>
    #include<algorithm>
    
    using namespace std;
    
    void updata(char *str )
    {
        int i,len=strlen(str);
        for (i=0; i<len; i++)
        {
            if( str[i]<='z' && str[i] >='a')
                str[i]=str[i]-'a'+'A';
        }
    }
    
    int main()
    {
        int n,m;
    
        while(~scanf("%d",&n)&&n!=0)
        {
            map<string,int>Q;
            char str[12];
            scanf("%d",&m);
            int k=0;
            for(int i=0; i<n; i++)
            {
                scanf("%s",str);
                updata(str);
                Q[str]++;
            }
            for(int i=0; i<m; i++)
            {
                scanf("%s",str);
                updata(str);
                if(Q[str])
                {
                    Q[str]=0;
                    k++;
                }
            }
            printf("%d
    ",n-k);
        }
        return 0;
    }
    

      

      

  • 相关阅读:
    java面向对象编程(七)--四大特征之多态
    java面向对象编程--Josephu问题(丢手帕问题)
    好文推荐
    树状数组学习笔记
    B2104 矩阵加法
    B2107 图像旋转
    B2128 素数个数
    求细胞数量
    洛谷 CF863A Quasi-palindrome
    30秒搞定所有英文连读
  • 原文地址:https://www.cnblogs.com/guoyongzhi/p/3233037.html
Copyright © 2011-2022 走看看