zoukankan      html  css  js  c++  java
  • Message Flood(map)

    http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=203#problem/D

    以前用字典树做过

    #include <string.h>
    #include <stdio.h>
    #include <string>
    #include <map>
    using namespace std;
    
    int main()
    {
        char a[30];
        int n,m,sum,l;
        while(scanf("%d",&n)!=EOF&&n!=0)
        {
            sum=0;
            scanf("%d",&m);
            map<string,int>q;
            q.clear();
            for(int i=0; i<n; i++)
            {
                scanf("%s",a);
                l=strlen(a);
                for(int j=0; j<l; j++)
                   a[j]=tolower(a[j]);//将字符转换成小写字符
                q[a]++;
            }
            while(m--)
            {
                scanf("%s",a);
                l=strlen(a);
               for(int i=0;i<l;i++)
                 a[i]=tolower(a[i]);
                if(q.count(a)>0)
                {
                    sum++;
                    q.erase(q.find(a));
                }
               }
               printf("%d
    ",n-sum);
    
           }
           return 0;
    }

    第一次做的方法

    #include<stdio.h>
    #include<iostream>
    #include<map>
    #include<stdlib.h>
    #include<string.h>
    
    using namespace std;
    char a[20001][11];
    int main()
    {
        int n,m,l;
        char b[11];
        map<string,int>q;
        while(scanf("%d",&n)!=EOF&&n!=0)
        {
            q.clear();
            scanf("%d",&m);
            getchar();
            for(int i=0;i<n;i++)
            {
                gets(a[i]);
                l=strlen(a[i]);
                for(int j=0;j<l;j++)
                {
                    if(a[i][j]>='A'&&a[i][j]<='Z')
                    a[i][j]=a[i][j]+32;
                }
                q[a[i]]++;
            }
            for(int i=1;i<=m;i++)
            {
                gets(b);
                l=strlen(b);
                for(int i=0;i<l;i++)
                {
                    if(b[i]>='A'&&b[i]<='Z')
                    b[i]=b[i]+32;
                }
                q[b]--;
            }
            int sum=0;
            for(int i=0;i<n;i++)
            {
                if(q[a[i]]>=1)
                sum++;
            }
            printf("%d
    ",sum);
        }
        return 0;
    }

    大神的代码

    #include <algorithm>
    #include <iostream>
    #include <cstring>
    #include <cstdlib>
    #include <cstdio>
    
    #include <set>
    
    using namespace std;
    
    int main()
    {
        int n,m,i,j,len;
        char s[30];
        while(scanf("%d",&n)!=EOF&&n)
        {
            set<string>mp;//声明set容器
            set<string>::iterator it;//声明set迭代器
            scanf("%d",&m);
            getchar();
            for(i=0; i<n; i++)
            {
                gets(s);
                len=strlen(s);
                for(j=0; j<len; j++)
                {
                    s[j]=towlower(s[j]);
                }
                mp.insert(s);//向set里加入一个元素
            }
            for(i=0; i<m; i++)
            {
                gets(s);
                len=strlen(s);
                for(j=0; j<len; j++)
                {
                    s[j]=towlower(s[j]);
                }
                if(mp.count(s))//判断容器里是否存在该元素
                    mp.erase(s);//如果容器里存在该元素,则删除
            }
            printf("%d
    ",mp.size());//输出容器内剩余元素个数
        }
        return 0;
    }
  • 相关阅读:
    坑爹的PostgreSQL的美元符号(有时需要替换成单引号)
    DataFrame的apply用法
    Pytorch写CNN
    Pytorch分类和准确性评估--基于FashionMNIST数据集
    设置Mac终端、pip、Anaconda、PyCharm共用一套环境
    Python编程基本规范
    【转】动态规划:最长递增子序列Longest Increasing Subsequence
    动态规划--找零钱
    在线编写复杂的数学公式--EdrawMath
    pandas如何逐行需改DataFrame
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/3894366.html
Copyright © 2011-2022 走看看